Wybierz plik bat, który chcesz uruchomić, a następnie uruchom inny

1

Obecnie próbuję utworzyć plik wsadowy, który uruchamia dla mnie niektóre programy. Można to łatwo zrobić za pomocą polecenia „start”, ale ostatni uruchomiony program działa tylko wtedy, gdy okno pierwszego jest aktywne.

Próbowałem użyć opóźnienia przed ostatnim programem. Ale pierwszy nie używa tego samego opóźnienia początkowego za każdym razem, co sprawia, że ​​czasami potrzebuję dużego lub krótkiego opóźnienia.

Pomyślałem więc, że muszę poczekać, aż kod zacznie działać, i dodałem do tego linię kodu. Ale czasami pierwszy program ma uruchomiony proces bez aktywnego okna (w sytuacjach o dużym opóźnieniu wspomnianych powyżej), więc opóźnienie kończy się, a ostatni program nie uruchamia się.

Teraz pokazuję, jak do tej pory wygląda mój plik wsadowy:

@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
KINGU
źródło

Odpowiedzi:

1

Nadal możesz użyć tasklist.exetak:

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

/V wypisze tytuł okna powiązanego z procesem, dzięki czemu możesz użyć tej kontroli do sterowania swoją pętlą.

Der Hochstapler
źródło