Quiero ejecutar dos comandos en una consola CMD de Windows.
En Linux lo haría así
touch thisfile ; ls -lstrh
¿Cómo se hace en Windows?
Así en todos los sistemas operativos de Microsoft desde el año 2000, y sigue siendo bueno hoy en día:
dir & echo foo
Si quieres que el segundo comando se ejecute sólo si el primero salió con éxito:
dir && echo foo
La sintaxis del ampersand (&) para ejecutar varios comandos en una línea se remonta a Windows XP, Windows 2000 y algunas versiones anteriores de NT. (4.0 al menos, según un comentarista aquí).
Hay bastantes otros puntos sobre esto que encontrarás desplazándote hacia abajo en esta página.
A continuación se presentan los datos históricos, para aquellos que puedan encontrarlos educativos.
Antes de eso, la sintaxis && era sólo una característica del sustituto del shell 4DOS antes de que esa característica se añadiera al intérprete de comandos de Microsoft.
En Windows 95, 98 y ME, se utilizaba en su lugar el carácter pipa:
dir | echo foo
En MS-DOS 5.0 y posteriores, a través de algunas versiones anteriores de Windows y NT del intérprete de comandos, el separador de comandos (no documentado) era el carácter 20 (Ctrl+T) que aquí representaré con ^T.
dir ^T echo foo
Una cita de la documentación:
Uso de múltiples comandos y símbolos de procesamiento condicional.
Puede ejecutar varios comandos desde una sola línea de comandos o script utilizando símbolos de procesamiento condicional. Cuando se ejecutan varios comandos con símbolos de procesamiento condicional, los comandos situados a la derecha del símbolo de procesamiento condicional actúan en función de los resultados del comando situado a la izquierda del símbolo de procesamiento condicional.
Por ejemplo, puede querer ejecutar un comando sólo si el comando anterior falla. O bien, puede querer ejecutar un comando sólo si el comando anterior tiene éxito.
Puede utilizar los caracteres especiales que se indican en la siguiente tabla para pasar varios comandos.
& [...]
comando1 & comando2
Se utiliza para separar varios comandos en una línea de comandos. Cmd.exe ejecuta el primer comando y luego el segundo.
&& [...]
comando1 && comando2
Se utiliza para ejecutar el comando que sigue a && sólo si el comando que precede al símbolo tiene éxito. Cmd.exe ejecuta el primer comando, y luego ejecuta el segundo comando sólo si el primer comando se completó con éxito.
|| [...]
comando1 || comando2
Se utiliza para ejecutar el comando que sigue a || sólo si el comando que precede a || falla. Cmd.exe ejecuta el primer comando, y luego ejecuta el segundo comando sólo si el primer comando no se completó con éxito (recibe un código de error mayor que cero).
( ) [...]
(comando1 & comando2)
Se utiliza para agrupar o anidar varios comandos.
; o ,
comando1 parámetro1;parámetro2
Se utiliza para separar los parámetros del comando.