我有几百个文件,其名称最后有一个顺序索引:
recipes0001.jpg
recipes0002.jpg
...
recipes0283.jpg
我需要重命名它们,以便索引从976开始(不是1),当索引达到1000时,前导0变为'1'
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
吗?
答案 0 :(得分:2)
这是我这样做的方式:
@echo off
setlocal EnableDelayedExpansion
set i=10975
for %%a in (*.jpg) do (
set /a i+=1
ren "%%a" "recipes!i:~1!.new"
)
ren *.new *.jpg
答案 1 :(得分:1)
要比较变量i
的值,需要在将其传递给if
命令时展开它。
if !i! lss 1000 (
ren "%%a" "recipes0!i!.new"
)^
else (
ren "%%a" "recipes!i!.new"
)