【发布时间】:2012-07-30 12:23:31
【问题描述】:
我遇到的问题是我的 if 语句(在 for 循环内)似乎不配合。我想要做的是:
- 遍历一堆 zip 文件并将它们重命名为 005.zip、006.zip、007.zip 等。
- 我保留了一个计数器,从 5 开始确定文件编号,以及一个前缀 00,以便获得 005、006 等。
- 一旦计数器达到 10,我希望前缀为 0 而不是 00。所以当计数器为 10 时,该文件将命名为 010.zip,然后是 011.zip,而不是 0010.zip、0011。拉链等。
这是我目前所拥有的:
setlocal enableextensions enabledelayedexpansion
SET /a COUNT=5
SET FILE_PREFIX=00
SET /a MAX=10
for %%f in (*.zip) do (
if !COUNT! == !MAX! (set FILE_PREFIX=0)
ren "%%f" %FILE_PREFIX%!COUNT!.zip
set /a COUNT+=1
echo !COUNT!
)
endlocal
为什么 if 语句不起作用?文件重命名工作正常,只是 if 语句不会将 FILE_PREFIX 更改为 0。
【问题讨论】:
-
如果对我有用。你确定你已经发布了你正在运行的非常准确的代码吗?
-
是的,它绝对是相同的代码..我仔细检查并再次运行它,我仍然得到名为 0010.zip、0011.zip 等的文件。
-
哦,我明白了问题所在。您不会对 FILE_PREFIX 应用延迟扩展。是我没有复制非常精确的代码。对不起。编辑了我的答案。
标签: if-statement batch-file for-loop