【バッチプログラム】フォルダ内のファイル名から削除対象を決める
OS:XP_SP3
TESTフォルダには、日付が頭についたTXT形式のファイルがあります。(例:20091011_XXXXX.txt)
バッチを使用して、今日から30日前のファイルの削除を自動化したいと思っています。
ファイル名と現在日付を比較して削除対象を指定することができるのではないと思っています。
どうかご教授お願い致します。
回答(2件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.2ベストアンサー20pt
インストールする必要がありますが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 …
日付は、%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
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示












