如何从批处理文件输出中插入换行符?
我想做的事情是:
echo hello\nworld
这将输出:
hello
world
如何从批处理文件输出中插入换行符?
我想做的事情是:
echo hello\nworld
这将输出:
hello
world
当前回答
Use:
echo hello
echo:
echo world
其他回答
的回声。足够的说。
如果需要在单行中使用&。例如,
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
请注意,所有解决方案使用光标定位根据控制台虚拟终端序列,光标定位与:
Sequence | Code | Description | Behaviour |
---|---|---|---|
ESC [ <n> E | CNL | Cursor Next Line | Cursor down <n> lines from current position |
只有在没有到达控制台窗口底部时才能工作。
在底部没有空间来向下移动光标,所以它只是向左移动(与CRLF的CR),之前打印的行从它的开始被覆盖。
就像Grimtron建议的那样-这里有一个简单的例子来定义它:
@echo off
set newline=^& echo.
echo hello %newline%world
输出
C:\>test.bat
hello
world
有一个标准的功能echo:在cmd/bat-files中写入空行,这模拟了cmd-output中的新行:
@echo off
echo line1
echo:
echo line2
or
@echo line1 & echo: & echo line2
上面引用的cmd-file输出:
line1
line2
可以使用@echo (@echo +[空间]+[不安全空间])
注:不安全空间可用Alt+0160获取
希望能有所帮助。
嗯,你是对的,我需要它在一个Makefile中,它在那里工作得很好。我想我的答案不适合批处理文件…我的坏。