你怎么能在batch file中回显换行符?
你怎么能从你的batch file输出插入一个换行符?
我想做一些事情:
> echo hello\nworld 
哪个会输出:
你好
世界
 echo hello & echo.world 
 这意味着你可以定义& echo. 作为换行的常数。 
使用:
 echo hello echo. echo world 
在这里,创build一个.bat文件,其中包含以下内容:
@echo off REM Creating a Newline variable (the two blank lines are required!) set NLM=^ set NL=^^^%NLM%%NLM%^%NLM%%NLM% REM Example Usage: echo There should be a newline%NL%inserted here. echo. pause
你应该看到如下的输出:
There should be a newline inserted here. Press any key to continue . . .
您显然只需要REM语句之间的代码。
 有一个标准的functionecho:在cmd / bat-files中写空行,这在你的cmd输出中模拟了一个新行: 
 @echo off @echo line1 @echo: @echo line2 
上面引用的cmd-file的输出:
 line1 line2 
像Ken的答案一样,但是使用了延迟扩展。
 setlocal EnableDelayedExpansion (set \n=^ %=Do not remove this line=% ) echo Line1!\n!Line2 echo Works also with quotes "!\n!line2" 
 首先创build一个换行符,并将其分配给\ nvariables。 
 这在线端的插入符号试图逃离下一个字符,但是如果这是一个换行,它将被忽略,并且下一个字符被读取和转义(即使这也是一个换行符)。 
 然后你需要第三个换行符来结束当前的指令,否则第三行将被附加到LFvariables。 
 即使batch file的行结束符为CR / LF,只有LF才是重要的,因为CR在parsing器的这个阶段被删除。 
 使用延迟扩展的好处是,没有特殊的字符处理。 
  echo Line1%LF%Line2将会失败,因为parsing器在单个换行符处停止parsing。 
 更多的解释是 
  SO:长命令在Vista / DOS批处理(.bat)文件中分成多行 
  SO:Windows命令解释器(CMD.EXE)如何parsing脚本? 
  编辑:避免echo. 
 这不能回答这个问题,因为问题是关于可以输出多行的单个echo 。 
 但是,尽pipe其他答案谁build议使用echo. 创build一个新的行,应该指出, echo. 是最糟糕的,因为它非常慢,并且可能完全失败,因为cmd.exesearch名为ECHO的文件并尝试启动它。 
为了打印一个空行,你可以使用其中的一个
 echo, echo; echo( echo/ echo+ echo= 
 但使用echo.  , echo\或echo:应该避免,因为他们可以真的很慢,取决于脚本将执行的位置,如networking驱动器。 
 echo. 说够了。 
 如果你需要在一行中,使用& 。 例如, 
 echo Line 1 & echo. & echo line 3 
会输出为:
 Line 1 line 3 
现在,说你想要一些更有趣的东西,…
 set n=^&echo. echo hello %n% world 
输出
 hello world 
 然后,只要你想在echo语句中添加一个新行,就可以抛出%n% 。 这更接近您在各种语言中使用的\n 。 
分解
  set n=设置variablesn等于: 
  ^排除下一个符号: 
  &意味着在同一行上执行另一个命令。 我们不关心errorlevel(它是一个大声喊叫的回声声明),所以不需要&& 。 
 echo. 继续回声陈述。 
所有这些工作,因为你实际上可以创build代码的variables,并在其他命令中使用它们。 这有点像一个贫民窟的function,因为批量并不是最先进的shell脚本语言。 这只适用于批处理variables使用不当,而不是自动指定整数,字符,浮点数,string等。
如果你狡猾,你可以得到这个与其他事情。 例如,使用它来回显选项卡
 set t=^&echo. ::there are spaces up to the double colon 
当回显某个东西redirect到一个文件时,多个回显命令将不起作用。 我想也许“>>”redirect是一个不错的select:
echo hello> temp 回声世界>>临时
就像Grimtron所build议的那样 – 下面是一个快速定义它的例子:
 @echo off set newline=^& echo. echo hello %newline%world 
产量
 C:\>test.bat hello world 
如果你需要把结果放到一个文件中,你可以使用
 (echo a & echo. & echo b) > file_containing_multiple_lines.txt 
你也可以这样做,
 (for %i in (ab "cd") do @echo %~i) 
输出将是,
 a b cd 
请注意,如果将其放入batch file中,则“%”应该加倍。
 (for %%i in (ab "cd") do @echo %%~i) 
如果有人来这里,因为他们正在寻找从MINGW make makefile回显空行,我用
 @cmd /c echo. 
 简单地使用echo. 导致可怕的process_begin: CreateProcess(NULL, echo., ...) failed. 错误信息。 
我希望这有助于至less有一个其他人:)
要批量开始新行,您只需添加“echo [”,如下所示:
 echo Hi! echo[ echo Hello! 
肯和Jeb解决scheme运作良好。
但是新行仅用LF字符生成,我需要CRLF字符(Windows版本)。
为此,在脚本的末尾,我已经将LF转换为CRLF。
例:
 TYPE file.txt | FIND "" /V > file_win.txt del file.txt rename file_win.txt file.txt 
 你可以使用@echo (@echo + [space] + [insecable space]) 
注意:可以用Alt + 0160获得可以放置的空间
希望它有助于:)
嗯,你是对的,我需要它在一个Makefile,它在那里完美的作品。 我想我的答案是不适合batch file…我的坏。
这为我工作,没有延迟的必要的扩展:
 @echo off ( echo ^<html^> echo ^<body^> echo Hello echo ^</body^> echo ^</html^> ) pause 
它写这样的输出:
 <html> <body> Hello </body> </html> Press any key to continue . . . 
我不能说比以下更简单:
 echo echo hello^&echo world^&pause>silly.bat call silly.bat 
 我不知道为什么人们不推荐这个,但echo有一个选项来启用反斜杠转义,这意味着\n将与echo工作。 
于是
 echo -e "Hello\nWorld" 
会给出输出
 Hello World