bat で古いファイルを削除したいという要望があり、調査した結果のメモです。
コマンド
例:「D:\FTP」フォルダーにある、30日以上前の csv ファイルを削除する。
forfiles /p D:\FTP /d -30 /m "*.csv" /c "cmd /c del @file"
動作確認
1. ダミーファイルを作成する
copy nul 1日前.txt
copy nul 2日前.txt
copy nul 3日前.txt
copy nul 4日前.txt
copy nul 5日前.txt
copy nul 6日前.txt
copy nul 7日前.txt
2. ダミーファイルのタイムスタンプを変更する(PoweShellで実行)
Set-ItemProperty "1日前.txt" -Name LastWriteTime -Value (Get-Date).AddDays(-1)
Set-ItemProperty "2日前.txt" -Name LastWriteTime -Value (Get-Date).AddDays(-2)
Set-ItemProperty "3日前.txt" -Name LastWriteTime -Value (Get-Date).AddDays(-3)
Set-ItemProperty "4日前.txt" -Name LastWriteTime -Value (Get-Date).AddDays(-4)
Set-ItemProperty "5日前.txt" -Name LastWriteTime -Value (Get-Date).AddDays(-5)
Set-ItemProperty "6日前.txt" -Name LastWriteTime -Value (Get-Date).AddDays(-6)
Set-ItemProperty "7日前.txt" -Name LastWriteTime -Value (Get-Date).AddDays(-7)
3. 3日前より古いのファイルを削除する(C:\tmp にファイルがあるとする)
forfiles /p C:\tmp /d -3 /m "*.txt" /c "cmd /c del @file"
4. 結果確認
C:\tmp>dir
(省略)
2021/03/24 14:19 0 1日前.txt
2021/03/23 14:19 0 2日前.txt
(省略)