可能重复:
Random variable not changing in “for” loop in windows batch file
我有一个文本文件,其中包含我要重命名的文件列表。这是我的代码:
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
总是这样做。
请帮助解决这个问题。
答案 0 :(得分:3)
查看set /?
,然后探讨延迟的环境扩展。你会先
SETLOCAL ENABLEDELAYEDEXPANSION
(同样查看setlocal /?
)然后将ren
中的变量用!而不是%'包装。我也会用&&连接命令,所以第一个命令在第二个命令开始之前完成。