以下は @Alex K. の提案に似ていますが、元の名前から数字を抽出していません。代わりに、カウンターを使用し、カウンターの値を使用して新しい名前を形成します。
@ECHO OFF
SET /A num=10000
FOR %%I IN (*webcamimage.jpg) DO (
SET /A num+=1
SETLOCAL EnableDelayedExpansion
RENAME "%%I" !num:~-4!.*
ENDLOCAL
)
新しい名前は常に で始まることに注意してください0001.jpg
。
アップデート
バッチ ファイルが画像と同じディレクトリにない場合は、次のようにパスを指定できます。
@ECHO OFF
SET /A num=10000
FOR %%I IN (D:\path\to\images\*webcamimage.jpg) DO (
SET /A num+=1
SETLOCAL EnableDelayedExpansion
RENAME "%%I" !num:~-4!.*
ENDLOCAL
)
または、ループの前にコマンドを追加してCD /D
、画像があるディレクトリに変更することもできます。
@ECHO OFF
CD /D D:\path\to\images
SET /A num=10000
FOR %%I IN (*webcamimage.jpg) DO (
SET /A num+=1
SETLOCAL EnableDelayedExpansion
RENAME "%%I" !num:~-4!.*
ENDLOCAL
)
ジョブの終了後に、バッチ ファイルの呼び出し前にアクティブだったディレクトリに戻す必要がある場合は、 and を使用PUSHD
しPOPD
ます。
@ECHO OFF
PUSHD D:\path\to\images
SET /A num=10000
FOR %%I IN (*webcamimage.jpg) DO (
SET /A num+=1
SETLOCAL EnableDelayedExpansion
RENAME "%%I" !num:~-4!.*
ENDLOCAL
)
POPD
もちろん、パスをパラメータ化して、バッチ ファイルを呼び出すときにコマンド ラインで指定できるようにすることもできます。方法は次のとおりです。
@ECHO OFF
SET "imagepath=%~1"
SET /A num=10000
FOR %%I IN ("%imagepath%\*webcamimage.jpg") DO (
SET /A num+=1
SETLOCAL EnableDelayedExpansion
RENAME "%%I" !num:~-4!.*
ENDLOCAL
)
これで、コマンド プロンプトで、または次のように別のバッチ ファイルからバッチ ファイルを呼び出すことができます。
batchname.bat D:\path\to\images
(ご存じない場合: 別のバッチ ファイルからバッチ ファイルを呼び出す場合は、呼び出されるバッチ ファイルCALL
の名前の前に追加する必要がある可能性があります。)CALL batchname parameters