从Windowsbatch file中向控制台回复一个空白(空)行

当从Windowsbatch file输出状态消息到控制台时,我想要输出空行来分解输出。 我该怎么做呢?

以下三种select都适用于您:

 echo[ echo( echo. 

例如:

 @echo off echo There will be a blank line below echo[ echo Above line is blank echo( echo The above line is also blank. echo. echo The above line is also blank. 

经常有使用“回声”的提示。

但是这很慢,并且可能会失败并显示一条错误消息,因为cmd.exe将首先search名为“echo”(不带扩展名)的文件,只有当文件不存在时,才会输出一个空行。

你可以使用echo(这个速度大约快了20倍,而且总是有效的,唯一的缺点就是看起来很奇怪。

更多关于不同的ECHO:/\ variants是在DOS提示:ECHO。 失败给文本或空白行 。

注意:虽然我原来的答案吸引了好几个赞扬,但我决定我可以做得更好。 你可以在编辑历史中find我原来的(简单的和误导的)答案。

如果微软有意提供从cmd.exe输出空行的方法,微软肯定会logging这样一个简单的操作。 正是这个疏忽促使我问这个问题。

所以,由于从cmd.exe输出空白行的方法没有logging,所以可以认为应该考虑任何有关如何做到这一点的build议。 这意味着,没有已知的方法从cmd.exe输出空白行, 保证所有情况下都能正常工作(或高效工作)。

考虑到这一点,下面讨论了从cmd.exe输出空白行的方法。 所有build议都基于echo命令的变体。


 echo. 

虽然这可以在很多情况下工作,但如果不是大多数情况下, 它应该避免,因为它比替代方法慢,实际上可能会失败(请看这里 , 这里和这里 )。 具体来说, cmd.exe首先search名为echo的文件并尝试启动它。 如果在当前工作目录下有一个名为echo的文件, echo. 将失败:

 'echo.' is not recognized as an internal or external command, operable program or batch file. 

 echo: echo\ 

在这个答案的最后,作者认为这些命令可能很慢,例如,如果它们是从networking驱动器位置执行的。 没有给出潜在缓慢的具体原因。 但可以推断,这可能与访问文件系统有关。 (也许是因为:\在Windows文件系统path中有特殊含义?)

但是,有些人可能会认为这些是安全的选项,而且\不能出现在文件名中。 由于这个或另一个原因, echo: 在这里是由SS64.com推荐的。


 echo( echo+ echo, echo/ echo; echo= echo[ echo] 

这个冗长的讨论包括我相信所有这些。 在这个SO回答中也推荐了几个这些选项。 在引用的讨论中, 这篇文章以看起来是对echo(的build议echo(echo:

我在本页顶部的问题没有指定Windows的一个版本。 我在Windows 10上的实验表明,无论在当前工作目录中是否存在名为echoecho+echo, ,…, echo]文件, 所有这些都会产生一个空行。 (请注意,我的问题早于Windows 10的发布。因此,我承认旧版Windows可能会有不同的performance。)

在这个答案中 , @jeb声称echo( 总是起作用的。对我来说,@ jeb的答案意味着其他选项不太可靠,但是没有提供任何细节,因为@jeb为其他参考文献贡献了很多有价值的内容我在这个答案中引用了。


结论:不要使用echo. 。 在我所引用的资料中,我所遇到的许多其他select中,对这两者的支持似乎是最权威的:

 echo( echo: 

但是我还没有发现任何有力证据表明使用这两种方法总是没有问题。


用法示例:

 @echo off echo Here is the first line. echo( echo There is a blank line above this line. 

预期产出:

 Here is the first line. There is a blank line above this line.