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

我想做的事情是:

echo hello\nworld

这将输出:

hello
world

当前回答

可以使用@echo (@echo +[空间]+[不安全空间])

注:不安全空间可用Alt+0160获取

希望能有所帮助。

嗯,你是对的,我需要它在一个Makefile中,它在那里工作得很好。我想我的答案不适合批处理文件…我的坏。

其他回答

在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

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

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

如果有人来这里是因为他们想从MINGW make makefile中回显一个空行,我使用

@cmd /c echo。

简单地使用echo。导致可怕的process_begin: CreateProcess(NULL, echo。,…)失败了。错误消息。

我希望这能帮助到至少一个人:)

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

echo hello > temp
echo world >> temp

的回声。足够的说。

如果需要在单行中使用&。例如,

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