2015-11-30 74 views
4

我创建一个批处理文件,我在用下面的命令麻烦的线路:CMD echo命令只保留最后一个文本

echo Hello & echo.World > Text.txt 

每当我做这个命令的输出只显示最后一行,像这样:

世界

但如果我只是做了上面的命令在CMD没有写入文件,它完美地出现在命令提示符。我可以完全访问我的文件,但我仍然无法写出整个文本。

回答

6

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

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

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

在分批&是一个命令分隔符。您可以通过使用两条单​​独的echo行来产生相同的结果。

回波你好& echo.World> TEXT.TXT

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

回波你好 echo.World> TEXT.TXT

这将报告Hello到控制台和写World到文件中(你没有提到Hello出现在控制台上...)

请注意,>创建一个新文件>>追加到任何现有的文件(或创建一个新文件),以便

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

将首先写Hello文件,然后将其覆盖与World

追加第二行,你需要

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

,或者在同一行,

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

一个parenthesised语句序列(又名 “块”)被认为是作为一个复杂的陈述,所以

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

会创建一个新文件包含两条线,而

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

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

还要注意,在>之前的尾部空格也将写入文件。

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

echo Hello 1> Text.txt 

那么hello 空间将被写入该文件。

如果消息空间一个单一的数字被写入文件终止,那么好,可能没什么就会出现。当我们遇到这种情况时,例如在确定'逻辑设备output will be used. The useful ones here are 1 (standard output) and 2(standard error) so you can redirect errormessages using 2> errorreports.txt`之前紧接在>之前的数字。

如果有这种情况,您可以通过使用

> Text.txt echo Hello 1 
克服这一特点
相关问题