PowerShellのファイル・フォルダ操作はGet-Item・Copy-Item・Move-Item・Remove-Itemなどのコマンドレットで行います。バッチファイルより直感的でエラーハンドリングも優れています。
基本的なファイル操作コマンドレット
| コマンドレット | エイリアス | 用途 |
|---|---|---|
| Get-ChildItem | ls / dir / gci | ファイル・フォルダ一覧を取得 |
| Get-Item | gi | ファイル・フォルダの情報を取得 |
| New-Item | ni | ファイル・フォルダを作成 |
| Copy-Item | cp / copy | コピー |
| Move-Item | mv / move | 移動・リネーム |
| Remove-Item | rm / del | 削除 |
| Rename-Item | ren | 名前変更 |
| Get-Content | cat / gc | ファイルの内容を取得 |
| Set-Content | sc | ファイルに書き込む(上書き) |
| Add-Content | ac | ファイルに追記 |
| Test-Path | 存在確認 |
ファイル・フォルダ操作の実例
# フォルダ作成
New-Item -Path "C:\work\logs" -ItemType Directory -Force
# ファイル作成
New-Item -Path "C:\work\test.txt" -ItemType File
# ファイルに書き込む
Set-Content -Path "C:\work\test.txt" -Value "Hello, PowerShell!" -Encoding UTF8
# ファイルを読む
$content = Get-Content -Path "C:\work\test.txt"
# 追記
Add-Content -Path "C:\work\log.txt" -Value "$(Get-Date) 処理完了"
# コピー(フォルダごと再帰的に)
Copy-Item -Path "C:\work" -Destination "D:\backup\work" -Recurse -Force
# 移動・リネーム
Move-Item -Path "C:\work\old.txt" -Destination "C:\work\new.txt"
# 削除(確認なし)
Remove-Item -Path "C:\work\temp" -Recurse -Force
# 存在確認
if (Test-Path "C:\work\config.json") {
Write-Host "設定ファイルが存在します"
}ファイルのフィルタリングと一括処理
# 拡張子でフィルタ
Get-ChildItem -Path C:\logs -Filter *.log
# サブフォルダも含めて検索
Get-ChildItem -Path C:\work -Recurse -Filter *.txt
# 30日以上前のファイルを削除
$limit = (Get-Date).AddDays(-30)
Get-ChildItem -Path C:\logs -Filter *.log |
Where-Object { $_.LastWriteTime -lt $limit } |
Remove-Item -Force
# ファイルサイズでフィルタ(1MB以上)
Get-ChildItem -Path C:\work -Recurse |
Where-Object { $_.Length -gt 1MB } |
Select-Object Name, @{Name="SizeMB";Expression={[math]::Round($_.Length/1MB,2)}}-Forceオプションは「確認ダイアログなしで強制実行」する便利なオプションですが、誤ったパスを指定するとデータを失います。スクリプト開発時はまずWrite-Hostで「何を削除・移動するか」を出力して確認してから、-Forceを有効にする習慣をつけることをおすすめします。
hobbyshift管理人
まとめ
- Get-ChildItem・Copy-Item・Move-Item・Remove-Itemが基本のファイル操作コマンドレット
- -Recurseでサブフォルダを含めた再帰処理、-Forceで確認なし強制実行
- Where-ObjectとLastWriteTime・Lengthを組み合わせて古いファイルや大きいファイルを自動処理できる
- Set-Content/Add-ContentでUTF8指定をすると文字化けを防げる



コメント