新しく質問する

【バッチプログラム】フォルダ内のファイル名から削除対象を決める

役に立った:0件
  • 質問者:mayoke
  • 投稿日時:2009/10/11 17:35
  • 困り度:すぐに回答が欲しいです

OS:XP_SP3

TESTフォルダには、日付が頭についたTXT形式のファイルがあります。(例:20091011_XXXXX.txt)
バッチを使用して、今日から30日前のファイルの削除を自動化したいと思っています。
ファイル名と現在日付を比較して削除対象を指定することができるのではないと思っています。

どうかご教授お願い致します。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件

No.2ベストアンサー20pt

  • 回答者:SHIMAPEE
  • 回答日時:2009/10/11 23:14

インストールする必要がありますが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 …

通報する

  • 参考になった:0件
  • 回答者:notnot
  • 回答日時:2009/10/11 22:55

日付は、%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

通報する

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ