如何在Windows CMD的一行中运行两个命令?
我想在Windows CMD控制台中运行两个命令。
在Linux中,我会这样做: touch thisfile ; ls -lstrh
touch thisfile ; ls -lstrh
。
它如何在Windows上完成?
自2000年以来,在所有Microsoft操作系统上都如此,今天依然不错:
dir & echo foo
如果您希望仅当第一个命令成功退出时才执行第二个命令:
dir && echo foo
在同一行上执行多个命令的单个&符(&)语法可以回溯到Windows XP,Windows 2000和一些较早的NT版本。 (至少4.0,根据一位评论者在这里。)
关于这一点还有其他几点,你会发现在这个页面上滚动。
历史数据如下,对于那些可能觉得它有教育意义的人。
在此之前,在将该功能添加到Microsoft命令解释程序之前,&&语法只是外壳替换4DOS的一个功能。
在Windows 95,98和ME中,您将使用管道字符:
dir | echo foo
在MS-DOS 5.0和更高版本中,通过一些较早的Windows和NT版本的命令解释器,(未记录的)命令分隔符是字符20(Ctrl + T),我将在这里用^ T表示。
dir ^T echo foo
来自文档的引用:
使用多个命令和条件处理符号
您可以使用条件处理符号从单个命令行或脚本运行多个命令。 当您使用条件处理符号运行多个命令时,条件处理符号右侧的命令根据条件处理符号左侧的命令结果进行操作。
例如,只有在前一个命令失败的情况下才可以运行命令。 或者,只有在前一个命令成功时才可以运行命令。
您可以使用下表中列出的特殊字符来传递多个命令。
& [...]
command1 & command2
用于在一个命令行上分隔多个命令。 Cmd.exe运行第一个命令,然后运行第二个命令。
&& [...]
command1 && command2
只有在符号前面的命令成功时,才可用于在&&后面运行命令。 Cmd.exe运行第一个命令,然后仅在第一个命令成功完成时才运行第二个命令。
|| [...]
command1 || command2
用于在||之后运行该命令 只有在||之前的命令 失败。 Cmd.exe运行第一个命令,然后仅在第一个命令未成功完成(接收到大于零的错误代码)时才运行第二个命令。
( ) [...]
(command1 & command2)
用于分组或嵌套多个命令。
; or ,
command1 parameter1;parameter2
用于分隔命令参数。
&
是Bash的等价物;
(运行命令)和&&
是击等效的&&
(仅当先前没有导致错误的运行命令)。