- ベストアンサー
【バッチプログラム】フォルダ内のファイル名から削除対象を決める
OS:XP_SP3 TESTフォルダには、日付が頭についたTXT形式のファイルがあります。(例:20091011_XXXXX.txt) バッチを使用して、今日から30日前のファイルの削除を自動化したいと思っています。 ファイル名と現在日付を比較して削除対象を指定することができるのではないと思っています。 どうかご教授お願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
インストールする必要がありますがPowerShellを使ってみるのはどうですか。例えば下のように書けます。 ----- $Before30 = (Get-Date).AddDays(-30).ToString("yyyyMMdd") dir C:\TEST\????????_*.txt | where {$_.Name.Substring(0,8) -le $Before30} | del -confirm ----- PowerShellについては、例えば@ITの記事が参考になるでしょう。 http://www.atmarkit.co.jp/fwin2k/operation/psh01/psh01_01.html
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
日付は、%DATE% に入ってます。 30日前だと計算が面倒なので、「前月の同日より前」くらいでどうですか? rem 年を取得 set YYYY=%DATE:~0,4% rem 月を取得 set MM=%DATE:~5,2% rem 日を取得 set DD=%DATE:~8,2% rem 前月を2桁で求めるため、月+100から1を引く set /a MM=(1%MM%-1) rem 結果は100~111なので、右2桁を取る set MM=%MM:~-2,2% rem 結果が00なら前年12月 if %MM%==00 set /a YYYY-=1, MM=12 rem 前月同日の日付 set YYYYMMDD=%YYYY%%MM%%DD% rem txtファイルについて、ファイル名が前月日付より小さければ削除 for %%F in (*.txt) do if %%F LSS %YYYYMMDD% del %%F