2012-02-28 32 views
5

我在寫批處理腳本時遇到了一些情況。我用來計算文本字符串的CRC(校驗和)的工具需要文本在文件中。我試圖獲取CRC的數據是一個文件名,但是當使用批處理將該文件名放入文本文件以計算CRC時,批處理腳本自然將行結束(CR/LF)和空行放在結束。因爲這會導致CRC出錯,這是一個問題。Dos批次:寫入文件而沒有行結尾

有沒有什麼辦法讓批處理腳本寫入文本文件而不會追加行尾? IE輸出一行未完成的文件?

-K.Barad

+1

該工具是否接受來自命令行的輸入,或者可以使用管道'|'調用它嗎? – vulkanino 2012-02-28 11:11:36

回答

9

<nul set /p ".=text" > file

它的速度更快,更安全比echo.|set /P ="text" > file

的NUL重定向比echo.(順便說一句echo.可能會失敗)的管道更快。
引號的樣式允許輸出引號。

但總是有限制!
Vista和Win7有一個「功能」來抑制領先空間,製表符和CR。
Xp可以輸出具有前導空格等的文本。
無法用等號開始輸出文本(導致語法錯誤)

+0

謝謝,這解決了我的問題 – 2012-02-29 10:22:49

+0

當我運行' file'時,它掛起我的終端。這是怎麼回事? – raphaelh 2015-07-22 17:42:35

+0

爲什麼我試用時命令的語法不正確? – 2017-06-19 15:44:56

5

你可以

echo.|set /P ="text" > file 

source

或者直接管的文本到命令行: 回聲 「文本」 | checksum_program.exe

編輯

如果你使用CRC32DOS,那麼你可以使用它的命令行選項-c忽略CR秒。

+0

不幸的是它是一個自定義的CRC程序。感謝您的提示,文件追加沒有新行是一種有用的技術。 – 2012-02-29 10:22:18