如何从批处理文件输出中插入换行符?

我想做的事情是:

echo hello\nworld

这将输出:

hello
world

当前回答

请注意,所有解决方案使用光标定位根据控制台虚拟终端序列,光标定位与:

Sequence Code Description Behaviour
ESC [ <n> E CNL Cursor Next Line Cursor down <n> lines from current position

只有在没有到达控制台窗口底部时才能工作。

在底部没有空间来向下移动光标,所以它只是向左移动(与CRLF的CR),之前打印的行从它的开始被覆盖。

其他回答

当回显某些内容以重定向到文件时,多个回显命令将不起作用。我认为“>>”重定向器是一个不错的选择:

echo hello > temp
echo world >> temp

注意,这不会在控制台工作,因为它将模拟一个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!

请注意,所有解决方案使用光标定位根据控制台虚拟终端序列,光标定位与:

Sequence Code Description Behaviour
ESC [ <n> E CNL Cursor Next Line Cursor down <n> lines from current position

只有在没有到达控制台窗口底部时才能工作。

在底部没有空间来向下移动光标,所以它只是向左移动(与CRLF的CR),之前打印的行从它的开始被覆盖。

Echo hello & Echo .world

这意味着您可以定义& echo。作为换行符的常数\n。

简单的

set nl=.
echo hello
echo%nl%
REM without space ^^^
echo World

结果:

hello
world