批处理不将单个数字回显到文件

Batch not echoing single digit to file

在我的部分代码中,我试图将单个数字回显到文件中:

echo 1>test.txt

除了命令解释器不拾取单个数字,回显

Echo is off.

到文件。有什么办法可以解决这个问题吗?

这是最简单的解决方案

>test.txt echo 1

为什么能解决问题?问题是什么?

在批处理文件中,输入和输出流从 0 到 9 编号:0= stdin = default input stream1= stdout = default output stream2= stderr = default error stream 和 3 到 9 可供用户使用。

您的代码存在问题,表达式 1> file 表示 redirect the stream 1 (standard output) to the file。解析器将数字作为重定向的一部分处理,而不是作为发送到重定向的数据。

要解决这个问题,有必要将数字与重定向运算符分开,但是 echo 1 >test.txt 也会输出额外的 space,这通常是不希望的行为。

通过重新排序行来更改命令的编写方式,我们可以在没有任何附加元素的情况下将数字和重定向分开。

编辑以适应评论

不重新排序能做到吗?

是的,您还可以将命令与重定向运算符分开,将命令括在括号中

(echo 1)>test.txt

或者您可以向解析器添加附加指示,转义数字

echo ^1>test.txt

或使用 for 可替换参数来处理数字,在重定向时将其隐藏到解析器

for %%a in (1) do echo %%a>test.txt

或者,使用延迟扩展,或者......几乎任何确保解析器不将数字作为流编号处理的方法。