如何将 Windows 批处理文件中从 0 到 9 的数字回显到没有尾随空格的文件?

Ger*_*ica 1 spaces batch-file handle echo trailing

如果我在名为 的批处理文件中执行以下操作test

echo number=0 > file
Run Code Online (Sandbox Code Playgroud)

并运行它:

> test
> echo number=0  1> file
Run Code Online (Sandbox Code Playgroud)

file 包含:

number=0?
Run Code Online (Sandbox Code Playgroud)

如果我test改为:

echo number=1> file
Run Code Online (Sandbox Code Playgroud)

并运行它:

 > test
 > echo number= 1>file
Run Code Online (Sandbox Code Playgroud)

file 包含:

number=
Run Code Online (Sandbox Code Playgroud)

1显然被解释为stdout 把手,这是可以理解的。

如果我test改为:

echo number=0> file
Run Code Online (Sandbox Code Playgroud)

-和29分别-并运行它:

 > test
 > echo number= 0>file
 number=
Run Code Online (Sandbox Code Playgroud)

the02to9显然被解释为非stdout 句柄并且file是空的,这也是可以理解的。

和:

echo "number=1"> file
Run Code Online (Sandbox Code Playgroud)

file 包含:

"number=1"
Run Code Online (Sandbox Code Playgroud)

和:

echo (number=1)> file
Run Code Online (Sandbox Code Playgroud)

file 包含:

(number=1)
Run Code Online (Sandbox Code Playgroud)

Ger*_*ica 6

在编写问题时,我在如何将 ECHO 输出重定向到文件时避免将尾随空格写入文本文件中找到了答案

将重定向放在命令前面,如:

> file echo number=0
Run Code Online (Sandbox Code Playgroud)

或者,正如 Stephan 所评论的,将完整的命令分组,而不仅仅是参数:

(echo number=0) > file
Run Code Online (Sandbox Code Playgroud)

(恕我直言,标题使用括号/括号对表达式进行分组有点遗漏。它是命令和表达式进行分组,不是吗?)

  • 另一种可能性:`(echo number=0)>file` (2认同)