Você pode usar tasklist
(interno) ou PsList
(parte do PsTools). Ambos suportam computadores remotos. Meu exemplo será usar tasklist
(quem não gosta de built-ins?) Em um computador local, já que é tudo o que tenho que testar no momento. Você pode adicionar os argumentos corretos para se conectar a um computador remoto; verifique os argumentos disponíveis com tasklist /?
.
tasklist /FI "IMAGENAME eq processname.exe" | find /I "processname.exe"
if ERRORLEVEL 1 goto NotRunning else goto Running
:NotRunning
echo The program is not running.
goto :eof
:Running
echo The program is running.
goto :eof
Divisão:
tasklist
é usado para listar todo o processo que corresponde ao nome especificado. Você pode usar curingas ( *
) para fazer correspondências parciais.
find
é usado para verificar se o nome do processo fazia parte da saída tasklist
. Ele irá definir o errorlevel
(basicamente, o valor de retorno) para 1 (falha) se não for encontrado, caso contrário, 0 (bem-sucedido). Isso é usado porque é mais fácil verificar o nível de erro do que a saída de texto de tasklist
quando em um if
.
Em seguida, usamos goto
para ir para o bloco correto, separando a execução dependendo se o processo está sendo executado ou não. Você também pode simplesmente executar os comandos na instrução if
. goto :eof
basicamente significa ir para o final do programa (EOF = End Of File), ou seja, sair.