在我的部分代码中,我试图将一个数字回显到一个文件:
echo 1>test.txt
除了命令解释器没有拾取单个数字,回显
Echo is off.
到文件。有什么方法可以解决这个问题吗?
答案 0 :(得分:5)
这是最简单的解决方案
>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
之类的内容也会输出一个aditional空间,通常是一种不受欢迎的行为。
通过重新排序行来改变命令的写入方式,我们可以将数字和重定向分开,而不需要任何附加元素。
编辑以适应评论
可以不重新排序吗?
是的,您也可以将命令与括在括号中的命令的重定向操作符分开
(echo 1)>test.txt
或者您可以向解析器添加aditional指示,转义数字
echo ^1>test.txt
或使用for
可替换参数来处理数字,在重定向时将其隐藏到解析器
for %%a in (1) do echo %%a>test.txt
或者,使用延迟扩展,或....几乎任何确保解析器不会将数字作为流号处理的内容。