Je veux exécuter deux commandes dans une console CMD de Windows.
Sous Linux, je le ferais comme suit
touch thisfile ; ls -lstrh
Comment fait-on sous Windows ?
Comme cela sur tous les OS Microsoft depuis 2000, et encore bon aujourd'hui :
dir & echo foo
Si vous voulez que la seconde commande ne s'exécute que si la première s'est terminée avec succès :
dir && echo foo
La syntaxe de l'esperluette (&) pour exécuter plusieurs commandes sur une seule ligne remonte à Windows XP, Windows 2000 et certaines versions antérieures de NT. (4.0 au moins, selon un commentateur ici).
Il y a beaucoup d'autres points à ce sujet que vous trouverez en faisant défiler cette page.
Les données historiques suivent, pour ceux qui pourraient trouver cela éducatif.
Auparavant, la syntaxe && n'était qu'une fonctionnalité du remplacement de l'interpréteur de commandes 4DOS avant que cette fonctionnalité ne soit ajoutée à l'interpréteur de commandes Microsoft.
Dans Windows 95, 98 et ME, vous utilisiez le caractère pipe à la place :
dir | echo foo
Dans MS-DOS 5.0 et plus, ainsi que dans certaines versions antérieures de Windows et NT de l'interpréteur de commandes, le séparateur de commandes (non documenté) était le caractère 20 (Ctrl+T) que je représenterai ici par ^T.
dir ^T echo foo
Une citation de la documentation :
Utilisation des commandes multiples et des symboles de traitement conditionnel.
Vous pouvez exécuter plusieurs commandes à partir d'une seule ligne de commande ou d'un seul script à l'aide de symboles de traitement conditionnel. Lorsque vous exécutez plusieurs commandes avec des symboles de traitement conditionnel, les commandes situées à droite du symbole de traitement conditionnel agissent en fonction des résultats de la commande située à gauche du symbole de traitement conditionnel.
Par exemple, vous pouvez vouloir exécuter une commande uniquement si la commande précédente échoue. Ou bien, vous pouvez vouloir exécuter une commande uniquement si la commande précédente réussit.
Vous pouvez utiliser les caractères spéciaux répertoriés dans le tableau suivant pour transmettre plusieurs commandes.
& [...]
commande1 & commande2
Utilisez ces caractères pour séparer plusieurs commandes sur une même ligne de commande. Cmd.exe exécute la première commande, puis la seconde.
&& [...]
command1 && command2
Permet d'exécuter la commande qui suit le symbole && uniquement si la commande qui le précède a réussi. Cmd.exe exécute la première commande, puis exécute la deuxième commande uniquement si la première commande s'est déroulée avec succès.
|| [...]
command1 || command2
Permet d'exécuter la commande qui suit || uniquement si la commande qui précède || échoue. Cmd.exe exécute la première commande, puis exécute la deuxième commande uniquement si la première commande n'a pas abouti (reçoit un code d'erreur supérieur à zéro).
( ) [...]
(commande1 & commande2)
Sert à regrouper ou à imbriquer plusieurs commandes.
; ou ,
commande1 paramètre1;paramètre2
Sert à séparer les paramètres d'une commande.
[1] : https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb490954(v=technet.10)