批量不回显单个数字到文件

dus*_*rds 2 batch-file echo

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

echo 1>test.txt
Run Code Online (Sandbox Code Playgroud)

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

Echo is off.
Run Code Online (Sandbox Code Playgroud)

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

MC *_* ND 5

这是最简单的解决方案

>test.txt echo 1
Run Code Online (Sandbox Code Playgroud)

为什么它解决了这个问题?问题是什么?

在批处理文件中,输入和输出流的编号从0至9: ,,0= stdin = default input stream 和3至9提供给用户.1= stdout = default output stream2= stderr = default error stream

代码的问题在于表达式1> file意味着什么redirect the stream 1 (standard output) to the file.解析器将数字作为重定向的一部分处理,而不是作为要发送到重定向的数据.

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

通过重新排序行来改变命令的写入方式,我们可以将数字和重定向分开,而不需要任何附加元素.

编辑以适应评论

可以在没有重新排序的情况下完成吗?

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

(echo 1)>test.txt
Run Code Online (Sandbox Code Playgroud)

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

echo ^1>test.txt
Run Code Online (Sandbox Code Playgroud)

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

for %%a in (1) do echo %%a>test.txt
Run Code Online (Sandbox Code Playgroud)

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

  • 或者`echo ^ 1> test.txt` (2认同)