Dos批处理:在不加行结尾符的情况下写入文件

6
我在撰写dos批处理脚本时遇到了一个问题。我使用的工具需要对文本字符串进行CRC(校验和)计算,但必须将文本放入文件中。我要获取CRC的数据是一个文件名,但当使用批处理将此文件名放入文本文件中计算CRC时,批处理自然会在结尾添加行结束符(CR/LF)和空行,这会导致CRC计算错误,造成问题。
有没有办法让批处理脚本写入文本文件而不附加行结束符呢?即输出单行未完成的内容到文件中?
-K.Barad

1
这个工具是否可以从命令行接受输入,或者可以通过管道符“|”调用它? - vulkanino
2个回答

11

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

这个命令比echo.|set /P ="text" > file更快且更安全。

nul重定向比使用echo.管道更快(顺便说一下,echo.可能会失败)。

引号的样式也允许输出引号。

但是总有限制!Vista和Win7有一个“特性”可以抑制前导空格、Tab和CR。Xp可以输出带前导空格的文本等。而且不可能以等号开头的文本(会导致语法错误)。


当我运行 <nul set /p ".=text" > file 命令时,我的终端卡住了。出了什么问题? - raphaelh
当我尝试执行时,为什么会收到“命令的语法不正确。”的错误信息? - Alfredo Capobianchi

5
你可以
echo.|set /P ="text" > file

来源

或者直接将文本导入命令行: echo "文本" | checksum_program.exe

编辑

如果你使用的是CRC32DOS,那么你可以使用其命令行选项-c来忽略CR


不幸的是,这是一个定制的CRC程序。谢谢你的提示,不过在文件追加时不添加新行是一种有用的技术。 - K.Barad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接