CMD Echo 命令只保留最后一行文本

CMD Echo Command Keeps Only Last Line of Text

我正在创建批处理文件,但在使用以下命令时遇到问题:

    echo Hello & echo.World > Text.txt

每当我执行此命令时,输出仅显示最后一行,如下所示:

World

但是,如果我只是在 CMD 中执行上述命令而不写入文件,它会完美地显示在命令提示符中。我可以完全访问我的文件,但我似乎仍然无法编写整个文本。

在批处理中,> 运算符的优先级高于 & 运算符,因此您的示例只是将最后一个命令 echo.World 重定向到文件。第一个命令仍在输出到控制台。

要重定向多个命令,您可以用括号将它们括起来。

(echo Hello & echo.World) > Text.txt

批量 & 是命令分隔符。您可以使用两个单独的 echo 行产生相同的结果。

echo 你好&echo.World > Text.txt

作为两个独立的命令执行,

echo 你好 echo.World > Text.txt

这将向控制台报告 Hello 并将 World 写入文件(您没有提到 Hello 出现在控制台上...)

请注意,> 创建了一个 new 文件,而 >> 附加到任何现有文件(或创建一个新文件)所以

echo Hello > Text.txt
echo.World > Text.txt

会先将 Hello 写入 new 文件,然后用 World.

覆盖它

追加第二行,您需要

echo Hello > Text.txt
echo.World >> Text.txt

或者,在一行中,

echo Hello > Text.txt&echo.World >> Text.txt

带括号的语句序列(又名 "block")被视为一个复杂语句,因此

(echo Hello &echo.World)> Text.txt

将创建一个包含这两行的新文件,而

(echo Hello &echo.World)>> Text.txt

会将这两行附加到任何现有文件。

另请注意,> 之前的尾随空格也将写入文件。

要非常小心 >>>。如果你执行的命令是

echo Hello 1> Text.txt

然后helloSpace会写入文件

如果将以 Space一个数字 结尾的消息写入文件,那么好吧,可能什么也不会出现。当我们遇到这种情况时,> 之前的数字决定了哪个“逻辑设备output will be used. The useful ones here are 1 (standard output) and 2(standard error) so you can redirect errormessages using2>errorreports.txt”。

如果你有这种情况,可以通过

克服这个特点
> Text.txt echo Hello 1