Я хочу сделать командный файл, который запускает 3 исполняемых файла соответственно: A.exe B.exe C.exe


PS: A.exe должен закончить свою работу, затем пакетный файл перейти на B.exe и, наконец, C.exe

1 ответ1

9

Пакетный файл из трех строк подойдет. Например, пакетный файл с именем mybatch.bat ...

START /wait notepad.exe
START /wait sol.exe
START /wait thirdExecutable.exe

Параметр /wait также можно заменить на /w , и он дает команду пакетному сценарию дождаться завершения исполняемого файла, прежде чем перейти к следующему этапу. Таким образом, вы можете не использовать этот параметр в третьей строке. Это приведет только к тому, что окно cmd останется открытым до тех пор, пока не завершится третий исполняемый файл.

РЕДАКТИРОВАТЬ ДЛЯ АДРЕСА. Вы также можете убедиться, что вы заменили исполняемый файл точным путем к исполняемым файлам - например, если A.exe был расположен в C:\MyFolder\ , вы изменили бы первую строку на START /wait C:\MyFolder\A.exe . Это не требуется, если исполняемые файлы находятся в любой папке, указанной в переменной среды %PATH% или находятся в той же папке, что и пакетный файл. Я не думаю, что это ваша проблема.

Интересно, были ли эти три окна cmd открыла партия, действительно исполняемыми файлами, которые вы хотели запустить? Главное окно, которое открывается с командным файлом, будет отображать команды, которые он выдает, а также будет отображаться, если он не сможет выполнить команды, которые ему даны. Если вы не получили всплывающее предупреждение об ошибке, то ваш пакетный файл находит и успешно запускает три указанных вами исполняемых файла.

Как и в приведенной мной ссылке, вы также можете использовать параметр /minimized - или эквивалентно /m - в дополнение к /wait для выполнения файлов, свернутых по умолчанию. Это может сделать вещи, возможно, немного аккуратнее и выглядеть так, как вы ожидали.

Как она стоит, я думаю , что это работает именно так , как задумано. Точно так же, как вы описали проблему, в любом случае.

ВТОРОЕ РЕДАКТИРОВАНИЕ: Учитывая ваш командный файл, я сделал небольшие изменения, необходимые для того, чтобы он делал то, что вы хотите. Я на самом деле не знаю, что вы хотите повторить с самого начала, но он должен отображать достаточно информации.

ECHO "programs are processing...." 
ECHO "First Phase" 
START /w "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vsvars32.bat" 
ECHO "Second Phase" 
START /w "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
ECHO "Final phase"
START /w "C:\Program Files\OPNET\16.0.A\sys\pc_intel_win32\bin\modeler.exe" 

Это работает как задумано?

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: Вы можете обойти переменную окружения, если вам когда-нибудь понадобится запустить этот пакетный файл где-нибудь, где у вас нет прав для их изменения.

ECHO "programs are processing...." 
ECHO "First Phase" 
C:
cd "\Program Files\Microsoft Visual Studio 9.0\VC\bin
START /w vsvars32.bat
ECHO "Second Phase"
cd ..
START /w vcvarsall.bat
ECHO "Final phase"
cd "\Program Files\OPNET\16.0.A\sys\pc_intel_win32\bin"
START /w modeler.exe

И это, кажется, обходит проблему с моей стороны. Ужасно, но пакетные файлы никогда не казались по-настоящему красивыми ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .