批处理不将单个数字回显到文件
Batch not echoing single digit to file
在我的部分代码中,我试图将单个数字回显到文件中:
echo 1>test.txt
除了命令解释器不拾取单个数字,回显
Echo is off.
到文件。有什么办法可以解决这个问题吗?
这是最简单的解决方案
>test.txt echo 1
为什么能解决问题?问题是什么?
在批处理文件中,输入和输出流从 0 到 9 编号:0= stdin = default input stream
、1= stdout = default output stream
、2= 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
或者,使用延迟扩展,或者......几乎任何确保解析器不将数字作为流编号处理的方法。
在我的部分代码中,我试图将单个数字回显到文件中:
echo 1>test.txt
除了命令解释器不拾取单个数字,回显
Echo is off.
到文件。有什么办法可以解决这个问题吗?
这是最简单的解决方案
>test.txt echo 1
为什么能解决问题?问题是什么?
在批处理文件中,输入和输出流从 0 到 9 编号:0= stdin = default input stream
、1= stdout = default output stream
、2= 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
或者,使用延迟扩展,或者......几乎任何确保解析器不将数字作为流编号处理的方法。