批处理for中为何不识别变量自加?

来源:百度知道 编辑:UC知道 时间:2024/05/12 10:48:04
我想写一个批处理,重命名当前目录下的文件成“报告1.doc”,“报告2.doc”……的形式,我的代码是:
set /a sum=1
for %%x in (*) do (
if not "%%x"=="rename.bat" (rem 若非重命名程序本身,则处理
rename %%x 报告%sum%.doc rem 发现此处%sum%的值始终是初始值1

)
set /a sum+=%sum%+1 rem 给变量自加
echo %sum% rem 在循环内发现sum的值始终是初始值1
)
echo %sum% rem 循环完了之后发现sum是做了自加的

为什么在循环内做自加后还是显示的是初始值?拜托各位了!

开启变量延迟就可以了
另外提醒你保存的文件名不能和内部命令相同
@echo off
setlocal enabledelayedexpansion
for %%x in (*) do (
if not "%%x"=="不能和内部命令相同.bat" (
set /a sum+=1
rename "%%x" "报告!sum!.doc"
))