set machines=PC2 TEST-PC PC34
for %%a in (%machines%) do (
echo %%a
echo.
) > PCs.txt
我想遍历机器列表并为每台机器执行代码。 但在我的PCs.txt中只有一行PC34。为批处理中的每个元素执行一些代码
我的错误是什么?
提前致谢!
set machines=PC2 TEST-PC PC34
for %%a in (%machines%) do (
echo %%a
echo.
) > PCs.txt
我想遍历机器列表并为每台机器执行代码。 但在我的PCs.txt中只有一行PC34。为批处理中的每个元素执行一些代码
我的错误是什么?
提前致谢!
循环工作正常;唯一的问题是如果文件已经存在,重定向到文件将覆盖文件。若要追加,请使用>>
重定向操作符。 (事先清除文件以摆脱任何现有内容。)像这样:
set machines=PC2 TEST-PC PC34
copy /Y NUL: PCs.txt
for %%a in (%machines%) do (
echo %%a
echo.
) >> PCs.txt
问题是重定向操作符。如果它存在,它将覆盖该文件并在不存在时创建它。但是正如它所写的那样,该操作是针对循环的每个迭代执行的。
您有两种选择。第一个是
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
循环做一次。