Я пытаюсь создать скрипт для выполнения exe при завершении работы для установки sp1. Мой сценарий выглядит примерно так (не настоящий сценарий летучей мыши).
If installed GOTO END
Install.exe
END:
Моя проблема в том, что когда он запускается, он запускает установщик, а затем завершает сценарий, потому что установщик - это другой процесс, а затем завершает процесс установки, потому что компьютер выключается и выключает систему (по крайней мере, я так думаю это делает.)
Есть ли способ сказать ему, чтобы он дождался завершения процесса, а затем завершил работу?
windows
batch-file
executable
Kravlin
источник
источник
like start /wait install; exit
?cmd /C start /wait install
Один короткий путь:
Также
может быть использован, хотя с большим количеством в конечном итоге вы сможете поймать некоторый вывод консоли. И это причина того, что это работает - команда piped ожидает ввода, пока не завершится .exe
источник
<
,>
,>>
,&
,&&
,||
,|
)Либо вызов exe-файла непосредственно из командного файла, либо использование
start /wait
будет работать, но есть предостережение.Если exe-файл, который вы вызываете, создает другой процесс, например, вызывает другой exe-файл, а затем завершает работу, пакетный файл продолжит обработку после завершения вызываемого exe-файла, так как он не знает о других процессах, запущенных им.
В вашем случае это реальная проблема, потому что установщики обычно извлекают файлы из какой-либо формы сжатого контейнера, который может быть встроен в сам exe-файл, затем запускают один из извлеченных файлов и завершают работу. Некоторые установщики предоставляют параметры командной строки, которые говорят исходному файлу exe не выходить до тех пор, пока не будет завершена вся установка, так что это то, что вы, возможно, захотите исследовать. Кроме этого, нет никакого реального способа обойти это с помощью только пакетных файлов, и для его решения потребуется программное решение.
источник
msiexec
часто запускает и другие процессы. :(start /wait
вообще? Я сам полагал, что это необходимо использоватьstart /wait
для блокировки пакетного файла, пока приложение GUI (в отличие от консоли) не завершит работу. Но тестируя его сейчас, я вижу, что пакетные файлы действительно ждут даже приложений с графическим интерфейсом. Я разместил соответствующий вопрос: почему приложение GUI блокирует пакетный файл?Вот пример использования MATLAB! Я предположил, что настройка пути для MATLAB выполнена, и выход из MATLAB обеспечивается файлом FileName.m (или пользователь указал его внутренне).
источник
У меня была проблема @John Gardeniers Если бы я описал, где мой exe вызвал другого exe и закончил, поэтому start / wait не сработало. Я создал «цикл while», чтобы проверить, работает ли он, а затем продолжил, как только закончил. Время может быть изменено в соответствии с вашими потребностями.
источник
Вы можете использовать команду start / wait. Это запускает приложение и ожидает его завершения.
Или, если вы знаете, сколько времени занимает выполнение, вы можете взглянуть на команду sleep, предоставляемую средствами Windows Server 2003 Resource Kit Tools . Sleep.exe может использоваться для приостановки пакета на любое количество секунд, чтобы позволить программе полностью установить программу, прежде чем пакетный файл продолжит установку чего-либо еще. Есть некоторые программы, которые игнорируют синтаксис «запуск / ожидание», так как сама программа запускает другой процесс, тогда sleep.exe очень полезен.
источник