Check if a process is running or not continually, and start multiple programs if not and terminate itself
I want to check continually if a program is running
O abaixo deve funcionar para a necessidade de chamar os scripts em lote, um por um, e basicamente procura confirmar na memória na máquina que o comando TASKLIST
é executado para confirmar sua execução.
Se não estiver em execução, chame os scripts em lote um após o outro; caso contrário, vá para a rotina :B
e inicie a verificação novamente. Se estiver em execução, ECHO
the "%MyProcess%" est en cours d^'execution
e, em seguida, vá para a rotina :B
e verifique novamente para confirmar (uma verificação contínua).
AVISO: Certifique-se de ter GOTO EOF no final dos scripts de lote que são chamados e NÃO EXIT
, senão eles não passarão o controle de volta para o responsável pela chamada. O lote original pode continuar sua verificação de loop. (veja abaixo o exemplo EXEMPLO DE SCRIPT CHAMADO ).
SCRIPT QUE TEM LÓGICA DE VERIFICAÇÃO (use este)
@ECHO OFF
:B
SET MyProcess=cmd.exe
ECHO "%MyProcess%"
TASKLIST | FINDSTR /I "%MyProcess%"
IF ERRORLEVEL 1 (GOTO :StartScripts) ELSE (ECHO "%MyProcess%" est en cours d^'execution)
GOTO :B
:StartScripts
::: //-- Put in the full path to the batch scripts to call
::: //-- Be sure the security context this process runs as has access to execute the below called batch scripts
CALL "C:\Path.bat"
CALL "C:\Path.bat"
CALL "C:\Path.bat"
GOTO :B
(Eu suponho que os scripts em lote chamados terão lógica para iniciar qualquer processo que foi determinado para NÃO ser encontrado em execução na memória na máquina que o script abobe é executado, portanto, certifique-se de que GOTO EOF
seja a última coisa que TODOS Eu preciso ver a lógica nestes para saber por mim mesmo se isso vai funcionar bem ou não, caso contrário.)
EXEMPLO DE SCRIPT CHAMADO (por exemplo, 1.bat, 2.bat, 3.bat)
<LOGIC>
<LOGIC>
<LOGIC>
<LOGIC>
<LOGIC>
<LOGIC>
<LOGIC>
<END OF LOGIC>
::: Keep GOTO EOF here to pass control back to the caller
GOTO EOF
OUTRAS NOTAS
-
Você poderia colocar a lógica no mesmo script em lote que os três scripts de lote chamados separados também são executados e apenas os chamam como rótulos \ rotinas, mas eu preciso ver a lógica naqueles para confirmar funcionaria. Contanto que cada um tenha o
GOTO EOF
na parte inferior eles, eles funcionariam da mesma maneira, mas desta forma toda a lógica estaria no mesmo arquivo de script em lote. -
A lógica do script em lote com
TASKLIST
eFINDSTR
como eu tenho para deve funcionar muito bem sem a sintaxe [/NH /FI imagename eq
] como no exemplo não funciona você mostrou em sua pergunta. Usando oFINDSTR
em vez deFIND
como no seu exemplo é bom como bem. -
Eu tenho uma lógica com um lote semelhante ao que verifica local e remotamente os processos em execução nos servidores que corrigem automaticamente o que você está fazendo ou envia um e-mail para indicar que alguém precisa dar alguma atenção, então eu confirmei esse método da lógica de script que forneci com sucesso. Eu simplesmente não tenho toda a sua lógica para otimizar, confirmar, etc.