从Windows批处理文件向控制台回显空白(空)行

时间:2013-12-19 20:27:46

标签: windows batch-file echo

从Windows批处理文件向控制台输出状态消息时,我想输出空行来分解输出。我该怎么做?

3 个答案:

答案 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.

虽然这可以在许多情况下使用,但 应该避免 ,因为它比其替代方案慢,实际上可能会失败(请参阅hereherehere)。具体来说,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上的实验表明,无论文件名为echoecho+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}}。