Windows10で、更新時刻が数分前以前のファイルを一括削除する方法です。

何日前以前のファイルの削除方法は簡単にネットで見つけられますが、分単位の指定でファイルを削除する方法がなかなか見つけられなかったので記事にしました。

使用するのはPowerShellです。

指定した条件のファイルを取得するためにGet-ChildItemコマンドレットを使用します。

まずファイルを削除したいフォルダを指定します。

ここではc:¥logsフォルダを対象とします。

Get-ChildItem 'c:¥logs'

サブフォルダまで対象とする場合、-Recurseオプションを付けます。

Get-ChildItem 'c:¥logs' -Recurse

次に更新時刻が30分前以前のファイルを探す場合、下記の様に記述します。

AddMinutes(-30)

さらにファイル名を曖昧検索します。
「log_20210601.csv」のようなファイルを対象とする場合、下記の様に記述します。

$_.Name -like "log_*.csv"

ここまでの条件に合致するファイルを抽出するコマンドは下記になります。

Get-ChildItem 'c:¥logs' | Where-Object{$_.LastWriteTime -lt (Get-Date). AddMinutes(-30) -and $_.Name -like "log_*.csv"}


これで該当するファイルの一覧が取得できます。
さらに、これらのファイルを削除する場合、パイプ「|」を使ってremove-itemコマンドレットに取得したファイル一覧を受け渡せば完成です。

Get-ChildItem 'c:¥logs' | Where-Object{$_.LastWriteTime -lt (Get-Date). AddMinutes(-30) -and $_.Name -like "log_*.csv"} | remove-item