协慌网

登录 贡献 社区

如何在 Windows CMD 中的一行中运行两个命令?

我想在 Windows CMD 控制台中运行两个命令。

在 Linux 中,我会这样做

touch thisfile ; ls -lstrh

它是如何在 Windows 上完成的?

答案

像这样在 2000 年以来的所有 Microsoft 操作系统上,今天仍然很好:

dir & echo foo

如果您希望第二个命令仅在第一个命令成功退出时执行:

dir && echo foo

在一行上执行多个命令的单个&符号(&)语法可以追溯到 Windows XP,Windows 2000 和一些早期的 NT 版本。 (至少 4.0,据一位评论者说。)

关于这一点还有很多其他要点,你会发现在这个页面上向下滚动。

随后的历史数据,对于那些可能发现它具有教育意义

在此之前,在将该功能添加到 Microsoft 命令解释程序之前,&& 语法只是 shell 替换 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 相当于; (运行命令)和&&是击等效的&& (仅当先前没有导致错误的运行命令)。