2011-07-13 210 views
1

可能重复:
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

[This question](http://stackoverflow.com/questions/6500217/random-variable-not-changing-in-for-loop-in-windows-batch-file)基本上是一样的问题。 –

回答

3

set /?,然后探索延迟的环境扩张。您将首先使用 SETLOCAL ENABLEDELAYEDEXPANSION (同样参见setlocal /?),然后将ren中的变量换成!'而不是%'。我还会使用连接命令的& &,因此第一个在第二个启动之前完成。

+1

'&&'意味着检查执行前一个命令的结果,'&'不。它也是'EnableDelayedExpansion'('EnableExtensions'有些不同)。 –

+0

@Andriy:谢谢,错字固定。 –