PowerShellを使って、経過時間に基づいて古いファイルを削除する方法



あらゆる場所にある古いファイルを手動でクリーンアップするのは、終わりのない作業のように感じるかもしれません。手動で削除しようとしたことがあるかもしれませんが、時間がかかったり、間違えたり、あるいはそもそも忘れてしまったりすることもあります。そこでPowerShellが役に立ちます。面倒なクリーンアップ作業を自動化してくれるので、あなたはもっと重要なことに集中できます。特に、一時フォルダ、ログ、ダウンロードファイルを整理整頓したいときに便利です。重要なファイルを誤って削除してしまうリスクもありません。

PowerShell を使ってファイルを自動クリーンアップする方法

問題領域をターゲットにした堅実なスクリプトから始めましょう

大まかな手順は以下のとおりです。PowerShellに、検索する場所($Source)と、削除するファイルの保存期間($Days)を指定します。必要に応じて、ファイルの種類(または.logなど.tmp)でフィルタリングすることもできます。スクリプトは削除したファイルのログを保存するので、後で確認できます。ミスが発生する可能性もあるため、これは非常に重要です。一般的な設定は次のようになります。

# File Cleanup PowerShell Script # Configuration Variables $Source = "C:\Temp" # Change this to your target folder $Days = 90 # Files older than 90 days will be deleted $ext = ".txt", ".log", ".tmp" # File extensions you want to delete $log = "$Source\cleanup_$(Get-Date -Format yyyyMMddHHmmss).txt" $DateBeforeXDays = (Get-Date).AddDays(-$Days) # Logging setup Start-Transcript -Path $log # Find and delete old files Get-ChildItem $Source -Recurse -Include $ext | Where-Object { $_. LastWriteTime -lt $DateBeforeXDays -and -not $_. PSIsContainer } | Remove-Item -Force -Verbose Stop-Transcript 

この設定は必要最低限​​の機能しか備えていませんが、柔軟性があります。一部のマシンでは、スクリプトが特定のファイルや権限で動作しない可能性があります。そのため、必要に応じて管理者権限で実行することをお勧めします。また、deleteコマンドを実行しても、特にファイルが現在開かれていたり保護されていたりする場合は、すべてのファイルがすぐに削除されない場合があることに気付きました。少し待つか、再度実行する必要があるかもしれません。

このスクリプトをどこから実行しますか?

PowerShellを管理者として開き(特に対象フォルダがシステムファイルや制限付きファイルの場合)、スクリプトを貼り付けて実行します。これを.ps1ファイル(例えば)として保存し、cleanup.ps1Windowsタスクスケジューラを使って自動実行するようにスケジュール設定できます。実行ポリシーで、スクリプトがブロックされている場合(または同様の設定)でも実行を許可するように設定してくださいSet-ExecutionPolicy RemoteSigned。重要なファイルを誤って削除しないよう、実行前に必ずファイルのパスと拡張子を確認してください。

ニーズに合わせたカスタマイズ

  • フォルダーの変更:$Sourceダウンロード、ログ、または一時フォルダーを指すように更新します。
  • ファイルの古さを調整する:クリーンアップの頻度に応じて調整します$Days(毎週の場合は 30 日、半年ごとの場合は 180 日など)。
  • 拡張子を選択します。配列を編集して、$extログや一時ファイルなど、特定のファイル タイプのみをフィルターします。
  • 再帰をスキップ:-Recurse最上位レベルのみをクリーンアップし、サブフォルダーはクリーンアップしない場合は削除します。

安全のヒント

必ず安全な環境かダミーフォルダで事前にテストしてください。注意しないと、スクリプトが意図しないデータを削除してしまう可能性があります。事前に復元ポイントを作成しておくのも賢明です。また、ファイル削除権限を持つユーザー認証情報でスクリプトを実行してください。ただし、システムファイルの削除が心配な場合は、管理者権限での実行は避けてください。

クリーンアップの自動化

  1. タスクスケジューラを開く
  2. 新しいタスクを作成し、名前を付けます
  3. スクリプトで PowerShell を実行するように設定します ( を使用powershell.exe -File "C:\path\to\cleanup.ps1")
  4. 毎週、毎日、毎月のクリーンアップのトリガーを設定します
  5. 適切な権限で実行されていることを確認する

一度設定しておけば、最後の瞬間に慌てる必要もなく、コンピューターは自動的に整理された状態を保てます。ただし、ログファイルを定期的に確認し、重要なデータが削除されていないか確認してください。設定が変更されると、どんなに優れたスクリプトでも動作が不安定になることがあります。

正直に言うと、この方法は完璧ではありませんが、毎回手動でフォルダをクリックするよりはずっと良いでしょう。ただし、クリーンアップを実行する前に、パスと拡張子を必ず確認してください。そうすれば、貴重な古いプロジェクトファイルを誤って削除してしまう事態を防げるかもしれません。さあ、クリーニングを始めましょう!

まとめ

  • フォルダのパス、経過時間、ファイルの種類を設定する
  • PowerShellで管理者権限でスクリプトを実行する
  • タスクスケジューラで定期的なクリーンアップをスケジュールする
  • 必ずログを検証し、最初にテストする

まとめ

PowerShellは完璧ではありませんし、スクリプトに少し手直しが必要な場合もあります。それでも、クリーンアップを自動化すれば、時間と手間を大幅に節約できます。念のため、徹底的にテストし、必要に応じてバックアップを取り、スクリプトのログを確認してください。これで誰かの作業時間が数時間短縮されることを願っています。正直なところ、手動​​でファイルを探すのが好きな人なんていませんよね?



この記事は役に立ちましたか?