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
循環做一次。