Windows:如何在命令提示符下指定多行命令?

时间:2009-03-03 09:22:39

标签: windows command-line

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

基本上是Linux的替代品

ls -l \
/usr/

这里我们使用反斜杠来扩展下一行的命令

什么是Windows的等价物?

4 个答案:

答案 0 :(得分:231)

几乎尝试了键盘上的每一个键:

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

C:\Users\Tim\Desktop>

所以它似乎是^键。

答案 1 :(得分:50)

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

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

所以相当于你的linux示例( More?是一个提示):

C:\> dir ^
More? C:\Windows

答案 2 :(得分:3)

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

C:\ ^
"SampleText" ..

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

答案 3 :(得分:0)

如果您是来这里寻找问题的答案,而不是OP的确切含义,即如何使多行CMD在单个行,我对您有一个危险的答案。

尝试将其与实际使用管道的东西一起使用,例如findstr,这是很成问题的。处理else时也是如此。但是,如果您只想直接从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"))

相反,您可以通过不需要循环使用错误的轨道而成为肮脏的偷偷摸摸的脚本编写者,方法是在每次循环/表达式的连续执行中将它们换成单个管道(|):< / p>

@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"