前の関連記事: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 件のコメント:
コメントを投稿