Ir ao conteúdo

Posts recomendados

Postado

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

 

Postado

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
Postado

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 ?

Postado

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

 

  • 2 anos depois...
Postado
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?

Postado

@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

Postado
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

Postado

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

Postado
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. 

 

Postado
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

Postado

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

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!