Sous Unix, nous pouvons placer plusieurs commandes sur une seule ligne, comme ceci:
$ date ; ls -l ; date
J'ai essayé une chose similaire dans Windows:
> echo %TIME% ; dir ; echo %TIME
Mais il a imprimé l'heure et n'exécute pas la commande dir
.
Comment puis-je atteindre cet objectif?
Utilisation:
echo %time% & dir & echo %time%
De mémoire, cela équivaut au séparateur de point-virgule dans bash
et à d'autres shells UNIXy.
Il y a aussi &&
(ou ||
) qui n'exécute la deuxième commande que si la première a réussi (ou a échoué), mais la seule esperluette &
est ce que vous recherchez ici.
Cela vous donnera probablement le même temps, car les variables d'environnement ont tendance à être évaluées en lecture plutôt qu'en exécution.
Vous pouvez contourner ce problème en activant l’extension retardée:
pax> cmd /v:on /c "echo !time! & ping 127.0.0.1 >nul: & echo !time!"
15:23:36.77
15:23:39.85
Cela est nécessaire à partir de la ligne de commande. Si vous faites cela dans un script, vous pouvez simplement utiliser setlocal
:
@setlocal enableextensions enabledelayedexpansion
@echo off
echo !time! & ping 127.0.0.1 >nul: & echo !time!
endlocal