前の関連記事:DICOM(8)GDCM:バッチファイルの環境変数の即時展開と遅延展開
前回の記事に続いて今回もバッチファイルの使い方の学習記録です。DICOMもGDCMも全く関係ありません。
Dec_で始まるファイル名以外のファイルを削除したい
前の記事からの持ち越し問題です。
@echo off pushd %1 for /r %%i in (*.dcm) do ( SET STR=%%~nxi if not "%STR:~0,4%"=="Dec_" ( cls echo %%iを削除中 del /q "%%i" ) )if not "%STR:~0,4%"=="Dec_"でファイル名の先頭に4文字の判定をしているはずなのですがDec_で始まるファイルも削除されてしまいます。
これは前記事に学習したように即時展開のためにSET STR=%%~nxiが機能していないためです。
そこで遅延展開にしてみます。
%STR%は!STR!にすればよいのですが、%STR:~0,4%は!STR:~0,4!にすればよいのでしょうか?
@echo off pushd %1 setlocal enabledelayedexpansion for /r %%i in (*.dcm) do ( SET STR=%%~nxi if not "!STR:~0,4!"=="Dec_" ( cls echo %%iを削除中 del /q "%%i" ) ) endlocalそのとおりでした。これでうまくいきました。
ファイル名がDec_で始まるもの以外のファイルが削除されました。
参考にしたサイト
BATファイルで文字列の切り出し
%STR:~0,4%は%STR%の左端から4文字切り出します。
0 件のコメント:
コメントを投稿