for /l %x in (1, 1, 10) do echo|set /p= SampleOut,>log.txt
我試圖輸出消除空間
SampleOut,SampleOut,SampleOut...
到一個文本文件,但上面的命令我只得到
SampleOut, SampleOut, SampleOut...
怎麼辦我刪除輸出到該文本文件的空間?
for /l %x in (1, 1, 10) do echo|set /p= SampleOut,>log.txt
我試圖輸出消除空間
SampleOut,SampleOut,SampleOut...
到一個文本文件,但上面的命令我只得到
SampleOut, SampleOut, SampleOut...
怎麼辦我刪除輸出到該文本文件的空間?
for /l %x in (1, 1, 10) do echo|set /p "=SampleOut,">>log.txt
始終使用"
雙引號set "varname=varvalue"
,以避免雙方varname
和varvalue
與不需要的領先和/或尾隨空格的問題。例如,未來set
命令導致不同的結果:
set "varname=varvalue"
set "varname =varvalue"
set "varname= varvalue"
set "varname=varvalue "
(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
的輸入流重定向,以避免在每次迭代中都要這樣做。
感謝它解決了我的問題。 –
謝謝它解決了我的問題。 –