Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows CMD Echo命令只保留最后一行文本_Windows_Batch File_Cmd_Echo_Command Prompt - Fatal编程技术网

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

Windows CMD Echo命令只保留最后一行文本,windows,batch-file,cmd,echo,command-prompt,Windows,Batch File,Cmd,Echo,Command Prompt,我正在创建批处理文件,但以下命令有问题: echo Hello & echo.World > Text.txt 每当我执行此命令时,输出仅显示最后一行,如下所示: 世界 但是,如果我只是在CMD中执行上述命令而不写入文件,那么它将完美地出现在命令提示符中。我可以完全访问我的文件,但我似乎仍然无法写入整个文本。在批处理中,运算符的优先级高于&运算符,因此您的示例只是将最后一个命令echo.World重定向到该文件。第一个命令仍在输出到控制台 要重定向多个命令,可以用括号将其

我正在创建批处理文件,但以下命令有问题:

    echo Hello & echo.World > Text.txt
每当我执行此命令时,输出仅显示最后一行,如下所示:

世界


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

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

要重定向多个命令,可以用括号将其括起来

(echo Hello & echo.World) > Text.txt
在批处理中&是一个命令分隔符。使用两条独立的
echo
行可以产生相同的结果

echo Hello&echo.World>Text.txt

作为两个独立的命令执行

回声你好 echo.World>Text.txt

它将向控制台报告
Hello
,并将
World
写入文件(您没有提到控制台上出现了
Hello

请注意,>会创建一个新的文件,而>>会将附加到任何现有文件(或创建一个新文件)中

首先将
Hello
写入新的文件,然后用
World
覆盖它

要添加第二行,您需要

echo Hello > Text.txt
echo.World >> Text.txt
或者,在一条线上

echo Hello > Text.txt&echo.World >> Text.txt
带括号的语句序列(也称为“块”)被视为一个复杂语句,因此

(echo Hello &echo.World)> Text.txt
将创建一个包含两行的新文件,而

(echo Hello &echo.World)>> Text.txt
将这两行附加到任何现有文件

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

对>和>>要非常小心。如果您执行的命令是

echo Hello 1> Text.txt
然后helloSpace将被写入该文件

如果一个以空格结尾的消息被写入一个文件,那么,很可能什么也不会出现。在这种情况下,>前面的数字决定将使用哪个逻辑设备
输出。这里有用的是1(标准输出)和2(标准错误),因此您可以使用
2>errorreports.txt`重定向错误消息

如果您遇到这种情况,可以使用

> Text.txt echo Hello 1
> Text.txt echo Hello 1