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