set machines=PC2 TEST-PC PC34
for %%a in (%machines%) do (
echo %%a
echo.
) > PCs.txt
我想遍历一个机器列表并为每台机器执行代码。 但是在我的PCs.txt中只有一行PC34。
我的错是什么?
提前致谢!
答案 0 :(得分:2)
循环正常工作;唯一的问题是重定向到文件会覆盖文件(如果文件已经存在)。要添加,请使用>>
重定向运算符。 (事先清除文件以删除任何现有内容。)像这样:
set machines=PC2 TEST-PC PC34
copy /Y NUL: PCs.txt
for %%a in (%machines%) do (
echo %%a
echo.
) >> PCs.txt
答案 1 :(得分: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
循环执行一次。