2015-06-24 84 views
0
for /l %x in (1, 1, 10) do echo|set /p= SampleOut,>log.txt 

我試圖輸出消除空間

SampleOut,SampleOut,SampleOut... 

到一個文本文件,但上面的命令我只得到

SampleOut, SampleOut, SampleOut... 

怎麼辦我刪除輸出到該文本文件的空間?

回答

2
for /l %x in (1, 1, 10) do echo|set /p "=SampleOut,">>log.txt 

始終使用"雙引號set "varname=varvalue",以避免雙方varnamevarvalue與不需要的領先和/或尾隨空格的問題。例如,未來set命令導致不同的結果:

set "varname=varvalue" 
set "varname =varvalue" 
set "varname= varvalue" 
set "varname=varvalue " 
+0

謝謝它解決了我的問題。 –

2
(for /l %x in (1, 1, 10) do @set /p"=SampleOut,") <nul >>log.txt 

有三種修改了代碼:

  • set命令現在報價以避免不需要的空間問題

  • 全部for命令被重定向到日誌文件。這樣輸出文件只打開一次,所有數據寫入,然後文件關閉。在你的代碼中,每次迭代都會執行open/write/close。

  • echo|set已被刪除。管道的問題在於它是在進程之間創建的,因此管道的兩側都需要一個單獨的cmd實例來執行內部命令,並且對於每次迭代,都需要創建兩個進程。

執行與它的輸入流從nul裝置讀取set /p有相同的結果,你的管,呼應沒有結束回車和換行的提示值。

在發佈的代碼中,我已將整個for的輸入流重定向,以避免在每次迭代中都要這樣做。

+0

感謝它解決了我的問題。 –