もくじ
📝 はじめに
PowerShellでログやバックアップを運用していると、
「一定期間より古いファイルだけ削除したい」
「容量を圧迫している昔のファイルを整理したい」
「手作業で日付を見ながら削除するのは大変」
と感じることはありませんか?
そんなときに役立つのが、
Where-Object と
Remove-Item を組み合わせた
古いファイル削除の実用テクニックです。
- ログファイルの世代管理
- バックアップフォルダの定期整理
- 一時ファイル・作業ファイルのクリーンアップ
✅ このコマンドでできること(要点)
- 指定した日数より古いファイルだけを抽出できる
- 更新日時・作成日時を条件に使える
- 削除前に内容を確認できる
- 定期実行用のスクリプトにしやすい
✅ Where-Object + Remove-Item でできること
Where-Object は、
条件に一致する項目だけを抽出するためのコマンドです。
これを使って
「更新日時が〇日より前のファイル」
といった条件を指定し、
Remove-Item で削除することで、
必要なファイルだけを安全に残すことができます。
人の目による判断を減らし、
運用ミスを防げるのが大きなメリットです。
🧩 基本構文
Get-ChildItem 対象パス -File |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-日数) } |
Remove-Item
LastWriteTime は「最終更新日時」を表します。
▶ 基本的な使い方(まずこれだけ)
🔹 30日より古いファイルを削除する
Get-ChildItem C:\Logs -File |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Remove-Item
このコマンドでエラーが出なければ、
30日より前に更新されたファイルが削除されています。
🔹 削除せず、対象を確認する
Get-ChildItem C:\Logs -File |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) }
まず確認してから削除すると安心です。
🛠 よく使われる指定例
🔹 サブフォルダも含めて古いファイルを削除する
Get-ChildItem C:\Logs -File -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-90) } |
Remove-Item
長期間溜まったログ整理でよく使われます。
🔹 削除対象をログとして保存する
Get-ChildItem C:\Logs -File -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-60) } |
Tee-Object -FilePath C:\Logs\deleted_files.txt |
Remove-Item
削除履歴を残したい場合に便利です。
💼 実務でよく使う使用例(応用)
🔹 バックアップフォルダの世代管理
$target = "C:\Backup"
$days = 14
Get-ChildItem $target -File |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$days) } |
Remove-Item
🔹 WhatIf で削除内容を事前確認
Get-ChildItem C:\Logs -File -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
Remove-Item -WhatIf
- -Recurse で階層ごと整理
- Tee-Object で削除ログ保存
- -WhatIf で安全確認
🧩 よくある勘違い・つまずきポイント
- フォルダも一緒に削除されると思い込む
- 作成日時と更新日時を混同する
- -Recurse の指定忘れ
- 削除対象のパス指定ミス
- 確認せずにいきなり削除してしまう
⚠ エラー・うまく動かないときの確認ポイント
- 対象パスが正しいか
- 削除権限がある場所か
- 日付条件が意図どおりか
- -WhatIf で事前確認したか
🧠 注意点
古いファイル削除は非常に便利ですが、
条件指定を誤ると重要なファイルを失う可能性があります。
初回実行時は必ず
-WhatIf や
削除対象の確認を行いましょう。
📌 まとめ
- Where-Object で古いファイルを抽出
- Remove-Item で安全に削除
- 日付条件を使った整理が可能
- ログ・バックアップ管理に最適
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探すこともできます。
- 古いファイルを削除したい
- ログを整理したい
- 容量を確保したい
- 一定期間で自動削除したい
- エラーや実行できない原因を調べたい
- PowerShellでメンテナンスしたい
- 安全に削除したい
