2012-09-20 65 views
7

我注意到,當我使用echo在DOS中向某個文件打印某些內容時,會向該字符串附加一個空格。我需要打印沒有尾隨空格的字符串。有沒有辦法做到這一點,或作爲一種解決方法,從文件中刪除尾隨空格?在DOS中使用沒有尾隨空格的echo

回答

19

如果我理解正確的問題,你寫了尾隨空格。

而不是

echo string > file 

使用

echo string>file 
+0

哈!就是這樣!沒有意識到echo會在後面輸出確切的字符串。謝謝! – Rayne

+2

這看起來不錯,但它不起作用。試試這個:'echo 1 2 3> file''。如果字符串恰好以數字結尾,重定向會將其視爲管道。你可以把它放在引號中,但你可能不想用引號。 – Synetech

+2

@Synetech''(echo 1 2 3)> file' – bers

0

一些快速搜索給我帶來了this link

看來你有多種選擇。如果要分析該文件後回聲使用腳本,你可以考慮這個VBScript中

Do While Not WScript.StdIn.AtEndOfStream 
    WScript.Echo RTrim(WScript.StdIn.ReadLine) 
    Loop 

哪些循環,通過線通過一個文件(通常.txt)的線,並執行RTrim,這條尾隨空格。

乾杯

+0

同樣可以通過批量使用'for/f「tokens = * delims =」%% x in(file.txt)echo%x> file2.txt '。但是爲什麼不在你的原始文件中做呢? –

10

假設你正在談論cmd.exe而非實際(而過時)MSDOS,有許多方法可以做到這一點,第一個是:

echo Here is some text>output.txt 

但由於我習慣於能夠在命令行上清楚地描述'參數',因此我發現它的可讀性略低於可讀性。

或者,沒有什麼周圍您的命令行的順序交換阻止你:

>output.txt echo Here is some text 

,這將使你的論點仍然分開,而沒有多餘的空格,把你的輸出文件。

事實上,我經常使用這種方法的代碼塊,以及:

>output.txt (
    echo hello 
    echo goodbye 
) 

將寫線到文件中。在這種情況下,我發現它更可取,因爲您在開始時知道輸出的內容,而不必去查看代碼塊的末尾。

+0

我發現當從代碼塊內部回顯時,它有時會丟失回車符,並在一行中輸出。 –

+0

我也遇到了前導空格的問題,所以我使用了上述格式的脫字號(^)escape:echo^string1。工作過一種享受。 – will

+0

'echo這是一些文本>輸出。txt 但是我發現它比可讀性稍差,因爲我習慣於能夠在命令行上清楚地描述'參數'。'更重要的是,如果文本以數字結尾,它將被視爲管道。第二個似乎運作良好(我不記得以前看過這個表格)。謝謝。 – Synetech