从Windows批处理文件向控制台输出状态消息时,我想输出空行来分解输出。我该怎么做?
答案 0 :(得分:122)
以下三个选项中的任何一个都适合您:
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.
答案 1 :(得分:73)
注意:虽然我的原始答案吸引了几个赞成,但我认为我可以做得更好。您可以在编辑历史中找到我原创(简单和误导)的答案。
如果微软有意提供从cmd.exe
输出空白行的方法,那么微软肯定会记录这样一个简单的操作。正是这个遗漏促使我提出这个问题。
所以,因为从cmd.exe
输出一个空行的方法是而不是,所以可以说应该考虑任何关于如何实现这个 hack的建议。这意味着没有已知的方法可以从cmd.exe
输出空白行保证在所有情况下工作(或高效工作)。
考虑到这一点,这里讨论的是推荐用于从cmd.exe
输出空行的方法。所有建议均基于echo
命令的变体。
echo.
虽然这可以在许多情况下使用,但 应该避免 ,因为它比其替代方案慢,实际上可能会失败(请参阅here ,here和here)。具体来说,cmd.exe
首先搜索名为echo
的文件并尝试启动它。如果当前工作目录中存在名为echo
的文件,则echo.
将失败并显示:
'echo.' is not recognized as an internal or external command,
operable program or batch file.
echo:
echo\
在this answer结束时,作者认为这些命令可能很慢,例如,如果它们是从网络驱动器位置执行的。没有给出潜在缓慢的具体原因。但可以推断,它可能与访问文件系统有关。 (也许是因为:
和\
在Windows文件系统路径中有特殊含义?)
但是,有些人可能会认为这些是安全的选项,因为:
和\
不能出现在文件名中。出于这个或其他原因,SS64.com here建议使用echo:
。
echo(
echo+
echo,
echo/
echo;
echo=
echo[
echo]
This lengthy discussion包括我认为的所有这些。在this SO answer中也建议使用其中一些选项。在引用的讨论中,this post以对echo(
和echo:
的建议结束。
我在本页顶部的问题未指定Windows版本。我在Windows 10上的实验表明,无论文件名为echo
,echo+
,echo,
,...,{,{em>所有都会产生空行。 {1}}存在于当前工作目录中。 (请注意,我的问题早于Windows 10的发布。所以我承认旧版Windows可能表现不同的可能性。)
在this answer中,@jeb断言echo]
始终有效。对我来说,@ jeb的答案暗示其他选项不太可靠,但没有提供任何细节可能的原因。请注意,@ jeb为本答案中引用的其他参考文献提供了许多有价值的内容。
结论:不使用echo(
。在我引用的消息来源中遇到的许多其他选项中,对这两个选项的支持似乎最具权威性:
echo.
但我没有找到任何有力的证据表明使用其中任何一种都将无故障。
使用示例:
echo(
echo:
预期输出:
@echo off
echo Here is the first line.
echo(
echo There is a blank line above this line.
答案 2 :(得分:40)
通常有提示使用'echo。'
但这很慢,并且可能会因错误消息而失败,因为cmd.exe将首先搜索名为“echo”的文件(没有扩展名),并且只有当文件不存在时才输出空行。
您可以使用echo(
。这大约快20倍,并且始终有效。唯一的缺点可能是看起来很奇怪。
有关DOS tips: ECHO. FAILS to give text or blank line的不同ECHO:/\
变体的详细信息,请参阅<{3}}。