- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:30日前を残して過去の日付フォルダを削除したい)
30日前を残して過去の日付フォルダを削除したい
このQ&Aのポイント
- Windows7を使用しています。毎日複数作成される日時名(YYYYMMDDHHMMSS)のフォルダを1カ月分残して削除したいと思っています。日時名フォルダはC直下のbatchと言うフォルダ内に保存されていきますが、それ以外のフォルダやtxtファイルなどが混在します。
- 下記の構文で記述したバッチを動かしたところ、全てのフォルダに対してrdが走ってしまうのですが、どのようにしたら求めた30日前の日付より前のもののみに対してフォルダの削除を行う事ができるのでしょうか?
- echo WScript.Echo DateAdd("d",-30,NOW()) > tmp2.vbs for /f "tokens=1-6 delims=/-: " %%D in ('cscript //nologo tmp2.vbs') do set AND=%%D%%E%%F%%G%%H%%I del tmp2.vbs for /d %%J in (??????????????) do if "%%J" LSS %AND% rd /s "%%J"
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
for /d %%J in (??????????????) do if "%%J" LSS %AND% rd /s "%%J" で、if で比較するときに片方を " " で囲んでいるからです。 201210040000 は 20120904000000 より大きいけど、"201210040000" は 20120904000000 より小さい。 なぜならば、それぞれの先頭の文字 " (引用符) の文字コードは 2 の文字コードより小さいから。 for /d %%J in (??????????????) do if "%%J" LSS "%AND%" rd /s "%%J" で、OKです。
その他の回答 (1)
- maesen
- ベストアンサー率81% (646/790)
回答No.1
書かれているバッチについては申し訳ありませんが検証していません。 別の角度からの提案です。 Windows 7ということですので forfiles コマンドが標準で使用出来ると思います。 やりたいことは1行で出来るのではないかと思います。 http://www.atmarkit.co.jp/fwin2k/win2ktips/1137forfiles/forfiles.html >それ以外のフォルダやtxtファイルなどが混在します。 この辺がちょっと面倒な部分だと思いますが、 /mオプションや @isdirの判定などで対応出来そうに思います。
質問者
お礼
maesenさん、有難うございます。 forfilesコマンドは知らなかったので、今後の参考のため勉強したいと思います。
お礼
notnotさん、有難うございます。 ""で出来ました!! %AND%を囲うところには気がつきませんでした。 本当に有難うございました!