【初心者向け】PowerShellの「Remove-Item」徹底解説|ファイル・フォルダ削除の基本と注意点

Windows

Windowsで作業を自動化したり、不要なファイルを一括削除したりしたいときに便利なのがPowerShell

中でもよく使われるコマンドのひとつが「Remove-Item」です。

「ファイルやフォルダを消すだけでしょ?」と思うかもしれませんが、使い方を間違えると大事なデータを失うリスクも…。

この記事では、初心者にもわかりやすく「Remove-Item」の基本から、よくあるエラー、便利なオプション、そして削除の安全性を高めるテクニックまで解説します。

スポンサーリンク

Remove-Itemとは?基本の使い方

Remove-Itemは、PowerShellでファイルやフォルダを削除するためのコマンドレットです。構文は以下の通り:

Remove-Item -Path "削除したいファイルまたはフォルダのパス"

例1:ファイルの削除

Remove-Item -Path "C:\temp\sample.txt"

例2:フォルダの削除(中身が空の場合)

Remove-Item -Path "C:\temp\sample_folder"

エイリアスとして、rmdelerase も使用できます:

rm "C:\temp\sample.txt"  # Remove-Itemと同じ

覚えておきたい重要オプション

-Recurse(再帰的削除)

フォルダの中身を含めてすべて削除する場合に使用します。

Remove-Item -Path "C:\temp\logs" -Recurse

Recurseを使うと、サブフォルダも含めて完全に削除されます。取り返しがつかないので、必ず確認してから実行しましょう。

-Force(隠しファイルや読み取り専用も削除)

通常では削除できないファイルも削除対象にできます。

Remove-Item -Path "C:\temp\secret.txt" -Force

-Include と -Exclude(特定パターンの絞り込み)

特定のファイルだけを削除したり、除外したりすることもできます:

# .txtファイルだけを削除
Remove-Item -Path "C:\temp\*" -Include "*.txt"
# .logファイル以外を削除
Remove-Item -Path "C:\temp\*" -Exclude "*.log"

安全な削除のためにやっておくべきこと

-WhatIfオプションで事前確認

何が削除されるのかを実際に削除せずに確認できます。

Remove-Item -Path "C:\temp\*" -Recurse -WhatIf

実行前の確認に必須!間違って重要なデータを削除するのを防げます。

-Confirmで都度確認

削除するたびに「本当に削除していいか?」を聞かれるようにします。

Remove-Item -Path "C:\temp\*" -Confirm

Test-Pathで存在確認してから削除

if (Test-Path "C:\temp\logs") {
    Remove-Item -Path "C:\temp\logs" -Recurse
    Write-Output "ログファイルを削除しました"
}

よくあるエラーとその対処法

エラー1:アクセスが拒否されました

  • 読み取り専用や管理者権限が必要な場合があります。
  • 対処法:PowerShellを管理者として実行する or -Forceオプションを付ける

エラー2:フォルダが空でない

  • フォルダ内にファイルやサブフォルダがある場合
  • 対処法:-Recurseを追加する

エラー3:ファイルが見つかりません

  • パスが間違っている可能性があります
  • 対処法:Get-ChildItemで正確なパスを確認する
Get-ChildItem -Path "C:\temp" -Recurse | Where-Object { $_.Name -like "*sample*" }

Remove-Itemが便利に使える具体的なシーン

一定期間経過したファイルを削除

# 3日以上前のログファイルを削除
Get-ChildItem -Path "C:\Logs" -Filter "*.log" | 
    Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-3) } | 
    Remove-Item

特定のパターンに一致するファイルを削除

# tempで始まるファイルをすべて削除
Remove-Item -Path "C:\temp\temp*.*"

複数の場所から同時に削除

"C:\temp\logs", "D:\backup\logs" | ForEach-Object {
    if (Test-Path $_) {
        Remove-Item -Path "$_\*.log" -WhatIf
    }
}

まとめ

「Remove-Item」は単純な削除コマンドに見えて、使い方次第で非常に強力なツールです。

その反面、間違えれば一瞬で大量のデータを失う可能性もあります。

ポイントおさらい

  • Remove-Itemはファイルやフォルダを削除するコマンド
  • -Recurse-Forceは強力だが慎重に使う
  • -WhatIf-Confirm安全性を担保
  • Test-Pathと組み合わせて存在確認をしてから使うのが安全
  • 削除対象の特定や権限問題にも注意

正しい使い方を覚えて、安全かつ効率的なPowerShell操作をマスターしましょう!

スクリプト内で使用する場合は特に、削除前の確認ステップを入れることを強くお勧めします。

コメント

タイトルとURLをコピーしました