如何从批处理文件输出中插入换行符?
我想做的事情是:
echo hello\nworld
这将输出:
hello
world
如何从批处理文件输出中插入换行符?
我想做的事情是:
echo hello\nworld
这将输出:
hello
world
当前回答
要批量地开始新一行,你所要做的就是添加“echo[”,像这样:
echo Hi!
echo[
echo Hello!
其他回答
注意,这不会在控制台工作,因为它将模拟一个escape键和清除行。
使用这段代码,将<ESC>替换为0x1b转义字符或使用这个Pastebin链接:
:: Replace <ESC> with the 0x1b escape character or copy from this Pastebin:
:: https://pastebin.com/xLWKTQZQ
echo Hello<ESC>[Eworld!
:: OR
set "\n=<ESC>[E"
echo Hello%\n%world!
这对我来说很有效,不需要延迟扩展:
@echo off
(
echo ^<html^>
echo ^<body^>
echo Hello
echo ^</body^>
echo ^</html^>
)
pause
它像这样写输出:
<html>
<body>
Hello
</body>
</html>
Press any key to continue . . .
的回声。足够的说。
如果需要在单行中使用&。例如,
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=设置变量n等于:
^取消后面的下一个符号:
&表示在同一行上执行另一个命令。我们不关心errorlevel(这是一个echo语句),所以不需要&&。
的回声。继续echo语句。
所有这些都是可行的,因为您实际上可以创建代码变量,并在其他命令中使用它们。它有点像贫民区函数,因为批处理并不是最先进的shell脚本语言。这只是因为批处理对变量的使用很差,没有在int、char、float、字符串等之间自然地进行指定。
如果你很狡猾,你可以让它和其他东西一起工作。例如,使用它来回显一个制表符
set t=^&echo. ::there are spaces up to the double colon
为什么不使用子字符串/替换空格来echo;?
set "_line=hello world"
echo\%_line: =&echo;%
结果:
hello
world
或者,将\n替换为echo;
set "_line=hello\nworld"
echo\%_line:\n=&echo;%
当回显某些内容以重定向到文件时,多个回显命令将不起作用。我认为“>>”重定向器是一个不错的选择:
echo hello > temp echo world >> temp