Eu quero executar dois comandos em um console CMD do Windows.
No Linux eu o faria assim
touch thisfile ; ls -lstrh
Como é feito no Windows?
Assim em todos os sistemas operativos Microsoft desde 2000, e ainda bem hoje:
dir & echo foo
Se você quiser que o segundo comando seja executado apenas se o primeiro sair com sucesso:
dir && echo foo
A sintaxe de um único ampersand (&) para executar comandos múltiplos em uma linha volta ao Windows XP, Windows 2000, e algumas versões anteriores do NT. (4.0 pelo menos, de acordo com um comentarista aqui).
Há alguns outros pontos sobre isso que você encontrará rolando por esta página.
Seguem-se dados históricos, para aqueles que os possam achar educativos.
Antes disso, o && syntax era apenas uma característica do substituto de shell 4DOS antes dessa característica ter sido adicionada ao interpretador de comandos da Microsoft.
No Windows 95, 98 e ME, você usaria o personagem cano em seu lugar:
dir | echo foo
No MS-DOS 5.0 e posteriormente, através de algumas versões anteriores do interpretador de comandos do Windows e NT, o separador de comandos (não documentado) era o caracter 20 (Ctrl+T) que eu representarei com ^T aqui.
dir ^T echo foo
Uma citação da documentação:
Usando comandos múltiplos e símbolos de processamento condicional
Você pode executar vários comandos de uma única linha de comando ou script usando símbolos de processamento condicional. Quando você executa comandos múltiplos com símbolos de processamento condicional, os comandos à direita do símbolo de processamento condicional agem com base nos resultados do comando à esquerda do símbolo de processamento condicional.
Por exemplo, você pode querer executar um comando somente se o comando anterior falhar. Ou, você pode querer rodar um comando somente se o comando anterior for bem sucedido.
Você pode usar os caracteres especiais listados na tabela a seguir para passar vários comandos.
& [...]
`comando1 & comando2``` Use para separar vários comandos em uma linha de comando. O Cmd.exe executa o primeiro comando, e depois o segundo comando.
&& [...]
`comando1 && comando2`` Use para executar o comando seguinte && somente se o comando que precede o símbolo for bem sucedido. O Cmd.exe executa o primeiro comando, e então executa o segundo comando somente se o primeiro comando for completado com sucesso.
|| [...]
command1 ||| comando2
Use para executar o comando seguinte ||| apenas se o comando anterior || falhar. O Cmd.exe executa o primeiro comando, e então executa o segundo comando somente se o primeiro comando não tiver sido concluído com sucesso (recebe um código de erro maior que zero).
( ) [...]
(comando1 & comando2)
Use para agrupar ou aninhar comandos múltiplos.
; ou ,
comando1 parâmetro1;parâmetro2
Use para separar os parâmetros de comando.