Ir ao conteúdo
  • Cadastre-se
Kyuube

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")

 

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas como eu faço pra fazer o programa tomar uma ação baseado na saída, por exemplo, abrir o programa. neste caso o notepad ?

Compartilhar este post


Link para o post
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

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu man, ajudou mt

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@andre131219977 sim é só incluir o outro programa no código também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ricardo_br consegue me ajudar a incluir esta outra linha abaixo? Tentei aqui replicando a segunda linha e inserindo o app que precisava porém não funcionou. Se puder me ajudar eu agradeço 

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ricardo_br Com este bat está somente abrindo, precisaria de um que reabrisse os app caso se encerrassem. Com o Bat anterior era possivel com um programa, nao consegui com dois ao mesmo tempo. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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. 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, é só remover essa linha:

timeout /t 120 > Nul

Compartilhar este post


Link para o post
Compartilhar em outros sites
14 minutos atrás, ricardo_br disse:

Sim, é só remover essa linha:

timeout /t 120 > Nul

Não está mantendo aberto 😕 

Apenas abre quando executo o bat. Mesmo com o bat aberto nem a calculadora reabre

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!