以下类似于@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
)
如果在完成作业后,您需要更改回在调用批处理文件之前处于活动状态的目录,请使用PUSHD
and 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