如何在cmd.exe命令中插入换行?


23

我正在尝试在上执行命令cmd.exe,并将换行符或换行符作为命令的一部分,如下所示:

command -option:text  
whatever

但是每个新行都会执行命令,而不是在下一行继续执行命令。

那么,如何在cmd.exe中输入换行符或创建多行命令?



Answers:


19

使用^字符作为转义符:

command -option:text^

whatever

我假设您使用的是Windows XP或类似版本的cmd.exe。这不是实际的DOS。如果您使用的是实际的DOS(MS-DOS,Win3.1,Win95,Win98,WinME),那么我不认为换行符是可以解决的。您将需要运行自定义外壳。cmd.exe将提示您输入“更多?”。每次您按Enter并^在该行的末尾按一次,只需再次按Enter即可实际转义/嵌入换行符。


太酷了,我不知道。
TJ Crowder 2010年

1
您的建议是允许我在换行符上输入更多文本。它不保留换行符。我想要的是在“文本”和“任何内容”之间的换行符。像这样的东西:“文本\无论什么”
rudimenter 2010年

我相信您必须使用两个换行符来执行此操作,这对我在原始帖子(现在已编辑)中没有意识到这一点很不利
Darth Android

1
应当注意,如果文本中有空格,则需要将其用引号引起来。此外,请确保您在结尾加上引号,否则,插入号将被忽略为转义字符,并被视为文本。最后,您将需要在每行包含空格的文本两边加上引号(即使为了安全起见,也要这样做),并在继续的每行的右引号后面插入一个尖号。
Synetech

1
最后,我试图找到一种在SHUTDOWN.EXE命令注释中添加换行符的方法。我最终使用了这样的东西:shutdown -s -t 900 -c "foo bar"^ >更多? "baz"^ >更多? "test that."有效。
Synetech

4

在数字键盘上使用Alt代码

C:\>ver

Microsoft Windows [Version 6.3.9600]

C:\>echo Line1◙Line2 >con
Line1
Line2

C:\>

可以使用小键盘在命令行上将该换行符作为Alt代码输入:启用NumLock的同时,按住ALT并在数字键盘上键入10,然后再释放ALT。如果还需要CR,请同时使用Alt + 13和Alt + 10键入它们:♪◙

注意:这不适用于批处理文件。

示例用例:

您正在尝试读取%PATH%或%CLASSPATH%环境变量以快速了解其中的内容和顺序,但是path返回的文本是不可读的。然后,您可以快速输入以下内容:

echo %path:;=◙% >con

编辑:

添加了>conBrent Rittenhouse针对cmd.exe的较新版本发现的解决方法,该方法原来的方法已停止工作。


这似乎对我不起作用。我最终e2 99 aa e2 97 99通过了。某种unicode代码点?我确实看到字符在命令行中输入。有什么建议么?
布拉德,

@Brad我可以确认它在Windows 10的新cmd.exe中似乎不再起作用,甚至我的旧Windows 7盒也不再具有这种功能。
阿米特·奈杜

奇怪的!我想知道是否可以从某些东西中挖掘出旧的cmd.exe。...–
Brad

@Brad,我只是尝试了几件事,并且意识到,如果在控制台属性中切换到“光栅字体”,而不是Lucida和True Type字体,然后选中此Use legacy console复选框,则可以得到旧的行为。但是在高分辨率显示器上看起来确实很糟糕。
阿米特·奈杜

1
实际上,我想我已经找到了一种完全可以使用任何字体的解决方案!如果仅用alt-10个字符回显该行,然后将其重定向到CON,它将起作用!例如:(echo New-line detected rigghhhtt ◙^<--- HERE!) > CON圆括号是可选的。这是您可以执行此操作的更可靠的示例(AND回车现在可以正常工作,并且完全独立!):i.imgur.com/qqN37PH.png
Brent Rittenhouse

1

我不知道这是否对您有用,而是通过放置&echo(以下空格很重要)。在您要换行的每个语句之间。我只尝试了一个简单的蝙蝠文件

echo %1

然后将其另存为testNewLines.bat

因此,然后cmd线

testNewLines first line&echo Second Line&echo Third line

导致以下回显

第一行
第二行
第三行


1

在扩展Amit的答案(/superuser//a/1132659/955256)时,我找到了一种无需使用旧版控制台即可以任何字体进行处理的方法。

您需要做的只是简单地用alt-10个字符回显该行,然后将其重定向到con,这样就可以了!

例如,给定:

(在Echo New-line中检测到rigghhhtt◙^ <---这里!)> CON

编辑:有趣的事实,看来您可以像这样将重定向放在开头:

> CON echo新行检测到rigghhhtt◙^ <---在这里!

奇怪吗?

您将获得以下输出:


New-line detected rigghhhtt  
<-- HERE!

(圆括号是可选的。)

是一个更强大的示例,说明您可以使用此AND回车返回现在完全独立地工作:

最好的是,如果您也重定向到文件,这将起作用!
(只需更改> CON> desired_output_file.txt

请享用!


1

^的输出可保存

set br= ^
<</br (newline)>>
<</br>>

例:

@echo off
setlocal enableExtensions enableDelayedExpansion
rem cd /D "%~dp0"


rem //# need 2 [/br], can't be saved to a var. by using %..%;
set br= ^



set "t=t1!br!t2!br!t3"

for /f "tokens=* delims=" %%q in ("!t!") do (
    echo %%q
)


:scIn
rem endlocal
pause
rem exit /b

; 输出:

t1
t2
t3
Press any key to continue . . .

0

我相信您无法在Windows cmd.exeShell中做到这一点。(不是 DOS。


您不需要完整的“自定义外壳”。您只需要编写如下代码(Python中的示例):

import subprocess
subprocess.call(["C:\\bin\\sometool.exe", "test\nwith\nnewlines"])

或Ruby:

Kernel::exec "C:\\bin\\sometool.exe", "test\nwith\nnewlines"

瞧,这并不难。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.