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

发布时间:2024-05-22 09:58 发布:上海旅游网

问题描述:

我想写一个批处理,重命名当前目录下的文件成“报告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"
))

热点新闻