从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上的实验表明,无论在当前工作目录中是否存在名为echo
, echo+
, 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.