for /f を利用して
更新日時が昨日までのtxtファイルを削除する
トークンの切り出しを行う関係上、空白の存在するファイル名には未対応
for のオプション /f は in で指定する文字列に
" " で指定するトークンを切り出し、変数に格納し、doに処理させる。
clean.cmd
@echo off
rem 環境変数の遅延展開
setlocal enabledelayedexpansion
rem 作業フォルダを移動
c:
cd c:\temp
rem date /t コマンドの第一トークンを取得
for /f "tokens=1" %%a in ('date /t') do set HONJITSU=%%a
rem dirコマンド(タイムフィールド:最終更新日)にて該当するファイルを抽出する。
rem 4行分はスキップし、第一トークンから第四トークンまでを 変数b(c,d,e)に順次格納する
rem 区切り文字はdelimsで指定する(ここでは空白文字)
for /f "skip=4 tokens=1-4 delims= " %%b in ('dir /tw "???????????.txt"') do (
rem dir コマンドの結果、はリストに"個のファイル"が出るまで
if "%%c"=="個のファイル" goto END
rem 更新日を取得
set KOUSHINBI=%%b
rem 取得した本日の日付と該当するファイルの更新日が異なれば...削除しなはれ
if not "!HONJITSU!"=="!KOUSHINBI!" (
@echo %%e:::::deleting
del /Q %%e
) else (
@echo %%e::::notDelete
)
)
endlocal
:END
pause
ちなみに先月までのものを・・・・としたければ日付の判定部で
"!HONJITSU:~0,-3!"=="!KOUSHINBI:~0,-3!"
のようにすればよい