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

我想写一个批处理,重命名当前目录下的文件成“报告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"
))
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网