В Unix мы можем поместить несколько команд в одну строку следующим образом:
$ date ; ls -l ; date
Я пробовал подобное в Windows:
> echo %TIME% ; dir ; echo %TIME
Но он напечатал время и не выполняет команду dir.
Как я могу этого добиться?
В Unix мы можем поместить несколько команд в одну строку следующим образом:
$ date ; ls -l ; date
Я пробовал подобное в Windows:
> echo %TIME% ; dir ; echo %TIME
Но он напечатал время и не выполняет команду dir.
Как я могу этого добиться?
Ответы:
Использование:
echo %time% & dir & echo %time%
Это по памяти эквивалентно разделителю точки с bashзапятой в и других оболочках UNIXy.
Также есть &&(или ||), который выполняет вторую команду только в том случае, если первая была успешной (или не удалось), но единственный амперсанд &- это то, что вы здесь ищете.
Однако это, вероятно, даст вам то же время, поскольку переменные среды, как правило, оцениваются при чтении, а не при выполнении.
Вы можете обойти это, включив отложенное расширение:
pax> cmd /v:on /c "echo !time! & ping 127.0.0.1 >nul: & echo !time!"
15:23:36.77
15:23:39.85
Это нужно из командной строки. Если вы делаете это внутри скрипта, вы можете просто использовать setlocal:
@setlocal enableextensions enabledelayedexpansion
@echo off
echo !time! & ping 127.0.0.1 >nul: & echo !time!
endlocal
time /t(или echo.|time) вместо того, echo %time%чтобы обойти проблему.