Несколько команд в одной строке в командном файле Windows - PullRequest
102 голосов
/ 19 января 2012

В Unix мы можем поместить несколько команд в одну строку, например:

$ date ; ls -l ; date

Я пробовал подобное в Windows:

 > echo %TIME% ; dir ; echo %TIME

Но он напечатал время и не выполняет команду dir.

Как мне этого добиться?

1 Ответ

168 голосов
/ 19 января 2012

Использование:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...