Ir ao conteúdo
  • Cadastre-se

Verificação de programa via arquivo batch


Posts recomendados

Galera, estava fazendo uma linha de programa (No próprio DOS, programação em batch file), quando me deparei com o seguinte problema: Eu precisava que o "programa" ficasse aberto. Caso a pessoa feche o programa, ele re-abriria, enfim, preciso saber como fazer um programa que "Verifique a operação de outro (Tasklist) e em seguida determine o que fazer, por exemplo (Abrir o programa, ou ficar inerte até que alguém o feche o "programa principal")

 

Link para o comentário
Compartilhar em outros sites

Você pode usar o tasklist para checar se o processo está rodando, aí você precisa processar a saída dele para obter a parte que te interessa para checar:

 

Comando:

TASKLIST /FI "IMAGENAME eq notepad.exe" /FO CSV /NH

Saída:

"notepad.exe","1576","Console","1","11.656 K"

 

 

 

Ou então isto

 

Comando:

TASKLIST /FI "IMAGENAME eq notepad.exe" /NH

Saída:


notepad.exe                   3028 Console                    1     11.800 K

 

 

Ou talvez, seja mais interessante checar a resposta pra quando o programa não é encontrado:

INFORMAÇÕES: nenhuma tarefa em execução correspondente aos critérios
especificados.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Você precisa tratar a saída do programa, e comparar com o que você espera.

 

Aqui eu fiz um código.

@ECHO OFF
:inicio
FOR /F "eol=e usebackq delims=,:" %%A IN (`TASKLIST /FI "IMAGENAME eq notepad.exe" /FO CSV /NH`) do (
  IF /I NOT %%A=="notepad.exe" notepad.exe
)
GOTO inicio

 

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...
Em 09/02/2017 às 23:40, isrnick disse:

@ECHO OFF :inicio FOR /F "eol=e usebackq delims=,:" %%A IN (`TASKLIST /FI "IMAGENAME eq notepad.exe" /FO CSV /NH`) do ( IF /I NOT %%A=="notepad.exe" notepad.exe ) GOTO inicio

É possivel para fazer para dois aplicativos ao mesmo tempo?

Da mesma forma que acontece para um?

Link para o comentário
Compartilhar em outros sites

@andre131219977 Aqui tem um exemplo de um batch que inicia os programas thunderbird.exe e calc.exe caso estes não estejam rodando. No caso você troca pelos programas que você quer iniciar se eles não estão rodando.

 


@echo off

for /f %%a in ('tasklist') do (
if /i "%%a"=="calc.exe" set pro1=existe
if /i "%%a"=="thunderbird.exe" set pro2=existe
)
if Not "%pro1%"=="existe" start "" "%windir%\system32\calc.exe"
if Not "%pro2%"=="existe" start "" "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe"

pause

 

 

existe.zip

Link para o comentário
Compartilhar em outros sites

2 horas atrás, ricardo_br disse:

Você quer que o script rode o tempo todo e verifique por exemplo de 10 em 10 minutos se os programas tão rodando é isso?

Neste bat abaixo quando o aplicativo é fechado ele logo abre, nao deixa ficar fechado. Preciso desta forma porém para dois app. Com este bat consegui apenas para um.

@ECHO OFF :inicio FOR /F "eol=e usebackq delims=,:" %%A IN (`TASKLIST /FI "IMAGENAME eq notepad.exe" /FO CSV /NH`) do ( IF /I NOT %%A=="notepad.exe" notepad.exe ) GOTO inicio

Link para o comentário
Compartilhar em outros sites

Ah ok entendi.


@echo off
:inicio
for /f %%a in ('tasklist') do (
if /i "%%a"=="calc.exe" set pro1=existe
if /i "%%a"=="thunderbird.exe" set pro2=existe
)
if Not "%pro1%"=="existe" start "" "%windir%\system32\calc.exe"
if Not "%pro2%"=="existe" start "" "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe"
timeout /t 120 > Nul
goto inicio
pause

 

Agora é so trocar os programas pelos seus e em "timeout /t 120 > Nul" você troca 120 pelo interval em segundos que você quer que o batch verifica se os programas estão rodando. Por exemplo para verificar a cada 10 minutos: (600=10min)

 

timeout /t 600 > Nul

Link para o comentário
Compartilhar em outros sites

1 hora atrás, ricardo_br disse:

Ah ok entendi.


@echo off
:inicio
for /f %%a in ('tasklist') do (
if /i "%%a"=="calc.exe" set pro1=existe
if /i "%%a"=="thunderbird.exe" set pro2=existe
)
if Not "%pro1%"=="existe" start "" "%windir%\system32\calc.exe"
if Not "%pro2%"=="existe" start "" "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe"
timeout /t 120 > Nul
goto inicio
pause

 

Agora é so trocar os programas pelos seus e em "timeout /t 120 > Nul" você troca 120 pelo interval em segundos que você quer que o batch verifica se os programas estão rodando. Por exemplo para verificar a cada 10 minutos: (600=10min)

 

timeout /t 600 > Nul

 

1 hora atrás, ricardo_br disse:

Ah ok entendi.


@echo off
:inicio
for /f %%a in ('tasklist') do (
if /i "%%a"=="calc.exe" set pro1=existe
if /i "%%a"=="thunderbird.exe" set pro2=existe
)
if Not "%pro1%"=="existe" start "" "%windir%\system32\calc.exe"
if Not "%pro2%"=="existe" start "" "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe"
timeout /t 120 > Nul
goto inicio
pause

 

Agora é so trocar os programas pelos seus e em "timeout /t 120 > Nul" você troca 120 pelo interval em segundos que você quer que o batch verifica se os programas estão rodando. Por exemplo para verificar a cada 10 minutos: (600=10min)

 

timeout /t 600 > Nul

Tem como deixar sem tempo?

 Para ele apenas abrir os dois caso um deles feche? 

Tipo esse 
@ECHO OFF :inicio FOR /F "eol=e usebackq delims=,:" %%A IN (`TASKLIST /FI "IMAGENAME eq notepad.exe" /FO CSV /NH`) do ( IF /I NOT %%A=="notepad.exe" notepad.exe ) GOTO inicio 

adicionado 33 minutos depois

Este bat anterior não funcionou com o tempo 😕

Teria algum sem tempo que apenas abra assim que ele feche?

Tenho um programa em PDF que fica fechando toda hora e um aplicativo que manda impressao nele salvando. Preciso ficar abrindo manual ele.

Pelo menos preciso de um bat que abram estes dois apps assim que fecham. 

 

Link para o comentário
Compartilhar em outros sites

Ok tente agora. Eu lembrei que no windows 10 o processo da calculadora se chama calculator.exe e no windows 8 calc.exe e eu fiz o script no Windows 8. Agora ele funciona nos 2 sistemas.

 


@echo off
:inicio
set pro1=
set pro2=
for /f %%a in ('tasklist') do (
if /i "%%a"=="calculator.exe" set pro1=existe
if /i "%%a"=="calc.exe" set pro1=existe
if /i "%%a"=="thunderbird.exe" set pro2=existe
)
if Not "%pro1%"=="existe" start "" "%windir%\system32\Calc.exe"
if Not "%pro2%"=="existe" start "" "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe"
timeout /t 5 > Nul
goto inicio

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...