Windows 如何编写多行命令?

Windows 如何编写多行命令?,windows,command-line,command-prompt,Windows,Command Line,Command Prompt,如何将命令扩展到下一行 基本上,Linux的windows替代方案是什么 ls -l \ /usr/ 这里我们使用反斜杠将命令扩展到下一行 Windows的等效功能是什么?在尝试了键盘上的几乎每个键之后: C:\Users\Tim>cd ^ Mehr? Desktop C:\Users\Tim\Desktop> 因此它似乎是^键。在Windows命令提示符中,^用于转义命令行上的下一个字符。(如\在字符串中使用。)需要在命令行中使用的字符应该有一个前缀“^”,因此它适用于换行

如何将命令扩展到下一行

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

ls -l \
/usr/
这里我们使用反斜杠将命令扩展到下一行


Windows的等效功能是什么?

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

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

C:\Users\Tim\Desktop>

因此它似乎是^键。

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

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

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


插入符号字符有效,但下一行不应以双引号开头。e、 g.这将不起作用:

C:\ ^
"SampleText" ..

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

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

试图将其用于实际使用管道的东西,比如说
findstr
,是很有问题的。处理
else
s也是如此。但是,如果您只想直接从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"

+1对于简短的问答,这里对实际问题可能重复的插入符号处理进行更深入的探讨仅仅是团队成员或遗留系统迫使开发人员在一个操作系统(这里是windows)上工作,而不是他们最喜欢的一个(linux)“^”字符应该是行中的最后一个字符。否则,如果末尾有空间,则“多行”命令不起作用。Microsoft无法遵守其自己的标准,因此在PowerShell中不起作用。相当于^的PowerShell是`所以C:\Users\Tim>cd`>>Desktop可以让您访问Tim的桌面\0/@RicJafe为什么要这样做?PowerShell是完全独立的!PS的等效键是“.知道powershell中是什么吗?@RyanSeanWattrus使用同样非常科学的方法:”(l'accent grave)
@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"