Batch file 批处理不向文件回显单个数字

Batch file 批处理不向文件回显单个数字,batch-file,echo,Batch File,Echo,在我的部分代码中,我尝试向文件回显单个数字: 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 er

在我的部分代码中,我尝试向文件回显单个数字:

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
意味着
将流1(标准输出)重定向到文件。解析器将数字作为重定向的一部分处理,而不是作为要发送到重定向的数据处理

为了解决这个问题,有必要将数字与重定向操作符分开,但是像
echo 1>test.txt
这样的东西也会输出一个传统的空格,这通常是不希望出现的行为

通过对行重新排序来更改命令的编写方式,我们可以在不使用任何传统元素的情况下分离数字和重定向

编辑以适应评论

不需要重新排序就可以完成吗

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

(echo 1)>test.txt
或者,您可以向解析器添加传统指示,对数字进行转义

echo ^1>test.txt
或者使用
for
可替换参数来处理数字,在重定向时将其隐藏到解析器

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

或者,使用延迟扩展,或者。。。。实际上,任何确保解析器不会将数字作为流号处理的东西。

(echo(1)>test.txt
@npocmaka,是,或
echo^1>test.txt
,但原因是相同的,并且取决于代码放置的位置,右括号或插入符号可能会产生干扰。更改行中的顺序更容易。或
echo^1>test.txt
@npoca:示例存储
“1”
(空格1)它应该是
(echo(1)>test.txt
,或者更简单一些:
(echo 1)>test.txt