1

В настоящее время я пытаюсь создать командный файл, который запускает некоторые программы для меня. Это легко сделать с помощью команды "start", но последняя запущенная программа работает, только если активно окно первого из них.

Я пытался использовать задержку до последней программы. Но первый не использует одну и ту же задержку запуска каждый раз, из-за чего мне иногда нужна длинная или короткая задержка.

Поэтому я подумал, что должен заставить код ждать запуска процесса, и добавил для этого строку кода. Но иногда первая программа запускает свой процесс без активного окна (в ситуациях с длительной задержкой, упомянутых выше), поэтому задержка заканчивается и последняя программа не запускается.

Теперь я покажу, как выглядит мой командный файл:

@ECHO OFF
start ..\pgr1.exe  {First Program}
start ..\prg2.exe  {Second Program}

:LOOP
C:\Windows\System32\tasklist.exe /FI "IMAGENAME eq prg1.exe" |  {Get Tasklist}
C:\Windows\System32\find.exe /i "prg1.exe" {Find First Program Process}
IF ERRORLEVEL 2 GOTO ROLL {Process Found}
IF ERRORLEVEL 1 GOTO LOOP {Process not Found}

:ROLL
call Delayer5.exe {Wait 5 secconds}
start ..\prg1_pluginloader.exe {Program that needs prg1.exe to be active}
cls

1 ответ1

1

Вы все еще можете использовать tasklist.exe так:

tasklist.exe /FI "IMAGENAME eq prg1.exe" /V | findstr "Your Window Title"

/V напечатает заголовок окна, связанного с процессом, так что вы можете использовать эту проверку для управления вашим циклом.

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