Подождите, пока исполняемый файл завершит работу - PullRequest
7 голосов
/ 21 марта 2011

Можете ли вы запустить два исполняемых файла в пакетном файле и дождаться завершения первого процесса, прежде чем запускать следующий?

Ответы [ 2 ]

18 голосов
/ 21 марта 2011

Использовать запуск / ожидание:

:NOTEPAD
start /wait notepad.exe
IF %ERRORLEVEL% == 0 goto NEXTITEM1
else goto QUIT

:NEXTITEM1
start /wait mplayer.exe
IF %ERRORLEVEL% == 0 goto NEXTITEM2
else goto QUIT

:NEXTITEM2
start /wait explorer.exe
IF %ERRORLEVEL% == 0 goto NEXTITEM3
else goto QUIT

:NEXTITEM3
REM You get the idea...

:QUIT
exit

Кроме того, используйте NT CMD, а не BAT (myscript.cmd).

В ответ на комментарии в приведенном выше скрипте удалены скобки около% ERRORLEVEL%. Кажется, что следующее ведет себя как ожидалось:

:NOTEPAD
start /wait notepad.exe || goto QUIT

:NEXTITEM1
start /wait mplayer2.exe || goto QUIT

:NEXTITEM2
REM You get the idea...

:QUIT
exit  

Оператор после двойной трубы выполняется только в случае сбоя того, что было до него.

6 голосов
/ 22 октября 2015

один короткий путь:

notepad.exe|more

даже это можно использовать:

notepad|rem

хотя, в конечном итоге, с помощью more вы сможете перехватить некоторые выходные данные, если они есть. И это причина того, что это работает - команда piped ожидает ввода, пока не завершится .exe.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...