222

我们如何将命令扩展到下一行?

基本上,Linux 的 Windows 替代方案是什么:

ls -l \
/usr/

在这里,我们使用反斜杠将命令扩展到下一行。

Windows 的等价物是什么?

4

4 回答 4

379

在尝试了我键盘上的几乎每个键之后:

C:\Users\Tim>cd ^
Mehr? Desktop

C:\Users\Tim\Desktop>

所以它似乎是 ^ 键。

于 2009-03-03T09:31:53.337 回答
65

在 Windows 命令提示符中,^用于转义命令行上的下一个字符。(Like\用在字符串中。)需要在命令行中使用的字符应该有一个 ^ 前缀,因此这就是它适用于换行符的原因。

作为参考,需要转义的字符(如果指定为命令参数而不是在引号内)是:&|()

因此,相当于您的 linux 示例将是(更多?作为提示):

C:\> dir ^
More? C:\Windows
于 2009-03-03T10:05:34.783 回答
7

插入符号有效,但下一行不应以双引号开头。例如,这将不起作用:

C:\ ^
"SampleText" ..

在没有双引号的情况下开始下一行(不是一个有效的例子,只是为了说明)

于 2018-03-14T12:35:58.347 回答
5

如果你来这里是为了寻找这个问题的答案,但不完全是 OP 的意思,即你如何让多行 CMD 在一行中工作我有一个危险的答案给你。

尝试将它与实际使用管道的东西一起使用,比如说findstr是很成问题的。处理elses 也是如此。但是,如果您只想从 CMD 直接执行多行条件命令,而不是通过批处理文件,这应该可以正常工作。

假设您希望在命令提示符下直接运行批处理中的类似内容:

@echo off
for /r %%T IN (*.*) DO (
    if /i "%%~xT"==".sln" (
        echo "%%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file
        echo Dumping SLN file contents
        type "%%~T"
    )
)

现在,您可以使用续行克拉 ( ^) 并像这样手动输入它,但是警告,这很乏味,如果你搞砸了,你可以学习再次输入它的乐趣。

^好吧,由于括号内的转义机制,它不会起作用耸耸肩至少不是按原样写。您实际上需要像这样将克拉加倍:

@echo off ^
More? for /r %T IN (*.sln) DO (^^
More? if /i "%~xT"==".sln" (^^
More? echo "%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file^^
More? echo Dumping SLN file contents^^
More? type "%~T"))

相反,您可以从不需要克拉的轨道的错误一侧成为一个肮脏的偷偷摸摸的脚本编写者,通过在|每个循环/表达式的延续中将它们换成单个管道 ( ):

@echo off
for /r %T IN (*.sln) DO if /i "%~xT"==".sln" echo "%~T" is a normal SLN file, and not a .SLN.METAPROJ or .SLN.PROJ file | echo Dumping SLN file contents | type "%~T"
于 2019-02-15T00:08:47.173 回答