LoginSignup
1
1

More than 3 years have passed since last update.

for /f を応用させた お掃除バッチ

Posted at

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!"
のようにすればよい

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1