DICOM(9)GDCM:バッチファイルで特定のファイル以外のファイルを削除する

前の関連記事: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文字切り出します。

次の関連記事:DICOM(10)GDCM:サブフォルダのdcmファイルも一括処理するバッチファイルが完成

PR

0 件のコメント:

コメントを投稿