初めての DOS スクリプトの 1 つを作成しようとしています (bash に慣れています)。
連番と年をプレフィックスとして使用して、写真の名前を変更するスクリプトを作成しようとしています。このスクリプトを作成しました:
@ECHO OFF
setlocal EnableDelayedExpansion
echo.
SET /P Year=Please enter Year (YYYY) :
SET /P Start=Starting Number :
dir
set /A i=%Start%
for %%f in (*.JPG) do call :renameit "%%f"
goto done
:renameit
echo %1 %i%
set str=%i%
set str=0000!str:.=!
set str=!str:~-4!
ren %1 PICT_%Year%_%str%.JPG
set /A i+=1
:done
問題は、それがうまく動作することもあれば、すでに名前が変更されたファイルの名前を変更するためにもう一度追加の検索を行うこともあります。以下に 2 つの例を示します (ご覧のとおり、トラブルシューティングのために上記のスクリプトに DIR と ECHO を追加しました)。
実行 1 (正しい) :
Directory of C:\TEST
07/01/2013 10:55 <DIR> .
07/01/2013 10:55 <DIR> ..
04/08/2011 14:28 16.823 PICT_2012_0005.JPG
04/08/2011 14:28 16.823 PICT_2012_0006.JPG
04/08/2011 14:28 16.823 PICT_2012_0007.JPG
07/01/2013 10:56 368 script.cmd
4 File(s) 50.837 bytes
2 Dir(s) 30.342.901.760 bytes free
"PICT_2012_0005.JPG" 5
"PICT_2012_0006.JPG" 6
"PICT_2012_0007.JPG" 7
実行 2 (失敗) :
Directory of C:\TEST
07/01/2013 10:56 <DIR> .
07/01/2013 10:56 <DIR> ..
04/08/2011 14:28 16.823 PICT_2011_0005.JPG
04/08/2011 14:28 16.823 PICT_2011_0006.JPG
04/08/2011 14:28 16.823 PICT_2011_0007.JPG
07/01/2013 10:56 368 script.cmd
4 File(s) 50.837 bytes
2 Dir(s) 30.342.901.760 bytes free
"PICT_2011_0005.JPG" 5
"PICT_2011_0006.JPG" 6
"PICT_2011_0007.JPG" 7
"PICT_2012_0005.JPG" 8
私が間違っていることは何ですか?
ありがとう