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

touch thisfile ; ls -lstrh

答案

dir & echo foo
dir && echo foo
dir | echo foo
dir ^T echo foo

来自文档的报价:

使用多个命令和条件处理符号

您可以使用条件处理符号从单个命令行或脚本运行多个命令。当您使用条件处理符号运行多个命令时,条件处理符号右侧的命令将根据条件处理符号左侧的命令结果起作用。

例如,您可能只想在前一个命令失败时才运行命令。或者,您可能只想在上一个命令成功的情况下运行命令。

您可以使用下表中列出的特殊字符来传递多个命令。

  • & [...]
    command1 & command2
    用于在一个命令行上分隔多个命令。 Cmd.exe 运行第一个命令,然后运行第二个命令。

  • && [...]
    command1 && command2
    仅当符号前面的命令成功时,才用于在 && 之后运行命令。 Cmd.exe 运行第一个命令,然后仅在第一个命令成功完成后才运行第二个命令。

  • || [...]
    command1 || command2
    用于运行以下命令 || 仅当 || 之前的命令失败。 Cmd.exe 运行第一个命令,然后仅在第一个命令未成功完成(接收到大于零的错误代码)的情况下运行第二个命令。

  • ( ) [...]
    (command1 & command2)
    用于分组或嵌套多个命令。

  • ; or ,
    command1 parameter1;parameter2
    用于分隔命令参数。

&是 Bash 的等价物; (运行命令)和&&是击等效的&& (运行命令仅当先前没有引起错误)。

您可以使用&依次运行命令。例如: c:\dir & vim myFile.txt

cmd /k echo hello && cd c:\ && cd Windows
set A=Hello & call echo %A%
@echo off
setlocal enabledelayedexpansion
set count=0
set "count=1" & echo %count% !count!

0 1
set "i=5" & set "arg!i!=MyFile!i!" & call echo path!i!=%temp%\%%arg!i!%%

path5=C:\Users\UserName\AppData\Local\Temp\MyFile5
[HKEY_CLASSES_ROOT\.dll]
"Content Type"="application/x-msdownload"
@="dllfile"

[HKEY_CLASSES_ROOT\dllfile]
@="Application Extension"

[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm]
@="Register Assembly"

[HKEY_CLASSES_ROOT\dllfile\Shell\RegAsm\command]
@="cmd /k C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\regasm.exe \"%1\" /codebase \"%1\" & pause & exit"

cmd /c ipconfig /all & Output.txt

该命令执行命令并在单个命令中打开Output.txt文件

color 0a & start chrome.exe