アプリ版:「スタンプのみでお礼する」機能のリリースについて

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"

A 回答 (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です。
    • good
    • 0
この回答へのお礼

notnotさん、有難うございます。
""で出来ました!!
%AND%を囲うところには気がつきませんでした。
本当に有難うございました!

お礼日時:2012/10/05 09:18

書かれているバッチについては申し訳ありませんが検証していません。


別の角度からの提案です。

Windows 7ということですので forfiles コマンドが標準で使用出来ると思います。
やりたいことは1行で出来るのではないかと思います。

http://www.atmarkit.co.jp/fwin2k/win2ktips/1137f …

>それ以外のフォルダやtxtファイルなどが混在します。

この辺がちょっと面倒な部分だと思いますが、
/mオプションや @isdirの判定などで対応出来そうに思います。
    • good
    • 0
この回答へのお礼

maesenさん、有難うございます。
forfilesコマンドは知らなかったので、今後の参考のため勉強したいと思います。

お礼日時:2012/10/05 09:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています