注意:虽然我最初的回答吸引了一些人的支持,但我认为我可以做得更好。您可以在编辑历史记录中找到我最初的(简单化和误导性的)答案。
如果微软打算提供一种从cmd.exe 输出空行的方法,那么微软肯定会记录这样一个简单的操作。正是这种疏忽促使我提出这个问题。
因此,因为从cmd.exe 输出空行的方法没有记录在案,可以说人们应该考虑任何关于如何完成此操作的建议 hack .这意味着没有已知的方法可以从cmd.exe 输出一个空白行,保证在所有情况下工作(或有效工作)。
考虑到这一点,这里讨论了从cmd.exe 输出空行的推荐方法。所有建议均基于echo 命令的变体。
echo.
虽然这在大多数情况下都有效,但应该避免,因为它比其他替代方案慢并且实际上可能会失败(请参阅here、@ 987654322@ 和 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 推荐echo: here。
echo(
echo+
echo,
echo/
echo;
echo=
echo[
echo]
This lengthy discussion 包括我认为的所有这些。 this SO answer 中也推荐了其中几个选项。在引用的讨论中,this post 的结尾似乎是对echo( 和echo: 的推荐。
我在本页顶部的问题未指定 Windows 版本。我在 Windows 10 上的实验表明,无论当前是否存在名为 echo、echo+、echo,、...、echo] 的文件,所有这些都会产生一个空行工作目录。 (请注意,我的问题早于 Windows 10 的发布。所以我承认旧版本的 Windows 可能会有不同的行为。)
在this answer 中,@jeb 断言echo( 总是 有效。对我来说,@jeb 的回答暗示其他选项不太可靠,但没有提供任何细节说明为什么会这样。请注意,@jeb 为我在此答案中引用的其他参考资料贡献了很多有价值的内容。
结论:不要使用echo.。在我引用的资料中遇到的许多其他选项中,对这两个选项的支持似乎是最权威的:
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.