在batch file循环

可能重复:
随机variables在windowsbatch file中的“for”循环中不变

我有我想要重命名文件列表的文本文件。 这是我的代码:

for /f %%i in (tmp.txt) do set script_name=%%i & ren %script_name% %script_name:~0,9%%num%%script_name:~15,9%.sql 

但是在第二部分中,仅在循环的第一次迭代中需要%script_name% 。 所以

 ren %script_name% %script_name:~0,9%%num%%script_name:~15,9%.sql 

总是这样做。

请帮助解决这个问题。

看一下set /? 然后探索延迟的环境扩张。 你将首先SETLOCAL ENABLEDELAYEDEXPANSION (看看setlocal /? ),然后将变量包含在!的ren ,而不是%。 我也将使用&&连接命令,所以第一个在第二个开始之前完成。