Faça com que um arquivo bat seja executado por um programa e inicie outro

1

No momento, estou tentando criar um arquivo em lote que lança alguns programas para mim. Isso pode ser feito facilmente com o comando "start", mas o último programa executado só funciona se a janela do primeiro estiver ativa.

Eu tentei usar um atraso antes do último programa. Mas o primeiro não usa o mesmo atraso de partida toda vez, o que me faz precisar, às vezes, de um atraso longo ou curto.

Então, pensei em fazer o código aguardar a execução do processo e adicionar uma linha de código para isso. Mas às vezes o primeiro programa tem seu processo em execução sem ter a janela ativa (em situações de atraso longo mencionadas acima), assim o atraso termina e o último programa falha ao iniciar.

Agora mostro como meu arquivo de lote parece até agora:

@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
    
por KINGU 29.08.2013 / 13:41

1 resposta

1

Você ainda pode usar tasklist.exe da seguinte forma:

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

/V imprimirá o título da janela da janela associada ao processo, para que você possa usar essa verificação para controlar seu loop.

    
por 29.08.2013 / 14:07