当我需要从Windows批处理文件向控制台输出状态消息时,我希望输出空白行来分隔输出。我该如何做到这一点?
以下三个选项中的任何一个都适用于您:
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.
echo.
" 可能无法正常工作,请参考 https://dev59.com/gHVC5IYBdhLWcg3w-WOs#wY4ToYgBc1ULPQZFZd4g 下的评论。 - Pacerierecho .
之间打空格。 - Cadoizecho.
cmd.exe
首先搜索名为echo
的文件并尝试启动它。如果当前工作目录中恰好存在名为echo
的文件,则echo.
将失败,显示以下内容:'echo.' is not recognized as an internal or external command,
operable program or batch file.
echo:
echo\
:
和\
在Windows文件系统路径中具有特殊含义?):
和\
不能出现在文件名中。因为这个或其他原因,SS64.com在这里推荐使用echo:
。echo(
echo+
echo,
echo/
echo;
echo=
echo[
echo]
这篇详细的讨论 包含了我认为所有的这些选项。其中几个选项在这个SO答案中也被推荐。在引用的讨论中,这篇帖子以推荐使用echo(
和echo:
结尾。
我在本页顶部的问题没有指定Windows版本。我的在Windows 10上的实验表明,无论当前工作目录中是否存在名为echo
,echo+
,echo,
,...,echo]
的文件,所有这些都会产生一个空行。(请注意,我的问题早于Windows 10的发布。因此,我承认旧版Windows可能会有不同的行为。)
在这个答案中,@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.
echo.
, echo:
, echo\
, echo+
, echo/
, echo[
, 和 echo]
不安全。当它们在 for /r
循环中使用时,例如 for /r %a (*) do echo.%a
等等,它们会将路径从上一个文件夹添加到下一个文件夹。echo(
,echo,
,echo;
和 echo=
没有这个问题。 - tomasz86ECHO.
是安全的。所描述的问题是在Windows中使用任何命令时,如果在命令中添加了一个.
,都会出现问题。当您需要确保不出现错误时,您可以始终将以下内容添加到批处理脚本的顶部:IF EXIST echo. DEL /Q echo.
- Luuk通常会建议使用 'echo' 命令。
但这样做速度较慢,而且可能会因为 cmd.exe 首先搜索名为 'echo'(无扩展名)的文件并且只有当该文件不存在时输出一行空白而导致失败并显示错误消息。
你可以使用 echo(
命令。它大约快了 20 倍,并且总是有效的。唯一的缺点可能是看起来很奇怪。
关于不同的 ECHO:/\
变体的更多信息,请参见DOS 提示:ECHO. 失败未给出文本或空行。
echo
语句,如何输出两行文本并在它们之间加上一个换行符? 话虽如此,那个问题的几个答案也解决了如何输出空白(空)行的问题。 - DavidRRecho:
。http://ss64.com/nt/echo.html - H2ONaClecho
的内容...echo.
会搜索名为echo
的文件,只有在找不到这样的文件时才会创建一个空行。这种特性使得echo.
比echo:
更慢、更不健壮。 - u8it