2011-07-13 262 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:謝謝,錯字固定。 –