下面是類似@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
開始。
UPDATE
如果批處理文件不在同一個目錄中的圖片,也可以指定這樣的路徑對他們說:
@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
和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
,當然,你可以parametrise的路徑,以及使您可以在指定它命令行調用批處理文件時。具體方法如下:
@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
。)
Linux/Windows/MacOSx? – matteomattei 2012-08-10 12:22:17
難道你不能只用一些現成的改名者嗎? – 2012-08-10 12:22:21
你需要爲此使用一個腳本還是你想寫一個程序? – 2012-08-10 12:25:38