我有幾百個文件,其名稱在結尾處連續指數:條件批量重命名(Windows XP中)
recipes0001.jpg
recipes0002.jpg
...
recipes0283.jpg
我需要使得指數開始在976(不是1)重命名它們和前導0變成 '1' 時的指標達到1000
recipes0976.jpg
recipes0977.jpg
...
recipes1000.jpg
recipes1001.jpg
....
我寫了這個批次代碼(從here修正的應答):
@echo off
setlocal EnableDelayedExpansion
set i=975
for %%a in (*.jpg) do (
set /a i+=1
if i lss 1000 ren "%%a" "recipes0!i!.new"
if i geq 1000 ren "%%a" "recipes!i!.new"
)
ren *.new *.jpg
看來,代碼總是運行的部分沒有領先0,因爲我不斷得到recipes976.jpg
,recipes1001.jpg
等我做錯了什麼?
作爲後續問題,可以將兩個if
合併爲一個if
... else
?
爲什麼使用這樣奇怪的語法?爲什麼不按照幫助中的建議('if /?')編寫')else(')? – aschipfl
我寫這樣的唯一原因是個人喜好。這個想法來自在寫入流重定向之前或之後一個命令,我更喜歡在命令之後寫入流重定向,所以我不必通過文本行來看看哪個命令正在被使用,我可能會有一些奇怪的偏好,但它只是一個偏好。 – treintje
我不明白這個'else'語法是如何鏈接到重定向的,但無論如何這都是您的偏好,所以對我來說很好...... ;-) – aschipfl