2014-09-24 61 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循環做一次。

相關問題