2014-09-24 58 views
0
set machines=PC2 TEST-PC PC34 
for %%a in (%machines%) do (
    echo %%a 
    echo. 
) > PCs.txt 

我想遍历机器列表并为每台机器执行代码。 但在我的PCs.txt中只有一行PC34。为批处理中的每个元素执行一些代码

我的错误是什么?

提前致谢!

回答

2

循环工作正常;唯一的问题是如果文件已经存在,重定向到文件将覆盖文件。若要追加,请使用>>重定向操作符。 (事先清除文件以摆脱任何现有内容。)像这样:

set machines=PC2 TEST-PC PC34 
copy /Y NUL: PCs.txt 
for %%a in (%machines%) do (
    echo %%a 
    echo. 
) >> PCs.txt 
1

问题是重定向操作符。如果它存在,它将覆盖该文件并在不存在时创建它。但是正如它所写的那样,该操作是针对循环的每个迭代执行的。

您有两种选择。第一个是

type nul > pcs.txt 
for %%a in (%machines%) do (
    echo %%a 
    echo. 
) >> pcs.txt 

首先创建/清空文件,然后向其添加数据。但是这会为每次迭代打开一次文件来添加数据。

第二个选项是

(for %%a in (%machines%) do (
    echo %%a 
    echo. 
)) > pcs.txt 

也就是说,不是开在每个迭代书面方式,为全面for循环做一次。