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

我想做的事情是:

echo hello\nworld

这将输出:

hello
world

当前回答

如果你需要把结果放到一个文件中,你可以使用:

(echo a & echo: & echo b) > file_containing_multiple_lines.txt

其他回答

在这里,创建一个.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语句之间的代码。

在windows 10的虚拟终端序列中,存在高度控制光标位置的方法。

要定义转义序列0x1b,可以使用以下方法:

@Echo off
 For /f %%a in ('echo prompt $E^| cmd')Do set \E=%%a

在字符串之间输出一个换行符:

<nul set /p "=Hello%\E%[EWorld"

输出n个换行符,其中n被整数替换。

<nul set /p "=%\E%[nE"

Many

Ken和Jeb的解决方案效果很好。

但是新行只生成一个LF字符,我需要CRLF字符(Windows版本)。

为此,在脚本的末尾,我已经将LF转换为CRLF。

例子:

TYPE file.txt | FIND "" /V > file_win.txt
del file.txt
rename file_win.txt file.txt

Echo hello & Echo .world

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

为什么不使用子字符串/替换空格来echo;?

set "_line=hello world"
echo\%_line: =&echo;%

结果:

hello
world

或者,将\n替换为echo;

set "_line=hello\nworld"
echo\%_line:\n=&echo;%