gpt4 book ai didi

batch-file - CMD 或 BATCH BNF 语法或解析器引用

转载 作者:行者123 更新时间:2023-12-03 22:32:35 24 4
gpt4 key购买 nike

我正在查看同事编写的一些批处理文件,我遇到了一些奇怪的语法,他在命令的开头调用了重定向运算符。

这个:

> output.txt ECHO something like this

而不是:

ECHO something like this > output.txt

它让我一时间感到震惊。它有效,所以我认为它有效。我去寻找官方引用来确认,但找不到。

我确实找到了 this reference关于运营商本身的使用。

我找到了 this我正在寻找的 bash 版本链接到这里:POSIX sh EBNF grammar

批量使用 > 和 >> 运算符的正确语法是什么?

编辑:澄清一下,我不是在寻找示例作为文档。我希望看到解释 cmd.exe 命令和 .bat 文件是如何专门针对重定向运算符进行解析的文档。

最佳答案

official documentation for 命令重定向运算符在行尾演示了它们的用法。但是将重定向放在行首同样正确(尽管有管道输出)。

将重定向放在 echo 行开头的好处是可以避免将尾随空格回显到文件中。

echo Hello world! > out.txt

15 bytes, includes a trailing space.

> out.txt echo Hello world!

14 bytes, does not include a trailing space

您还可以使用括号来避免尾随空格。

(echo Hello world!) > out.txt

14 bytes

括号也可用于对多个命令的输出进行分组,而无需关闭并重新打开每一行的文件句柄。

rem // option 1
> out.txt (
echo Hello world!
echo Another line
)

rem // option 2
(
echo Hello world!
echo Another line
) > out.txt

这两个带括号的代码块执行完全相同的操作。两者都比这更有效:

rem // option 3
>out.txt echo Hello world!
>>out.txt echo Another line

上面选项 1 和 2 中的括号示例只打开、写入和关闭“out.txt”一次;而选项 3 示例打开、写入、关闭、打开以附加、写入和关闭。将大量数据转储到文本文件时,此类优化会有所作为。

关于batch-file - CMD 或 BATCH BNF 语法或解析器引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41556080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com