Ir ao conteúdo

Bat Batch para verificar se dois ou mais programas estão abertos


Ir à solução Resolvido por Cyclop303,

Posts recomendados

Postado

Eu estou a horas tentando fazer um script para verificar se tem dois programas abertos, mas sempre o meu script só detecta um programa.

  • Curtir 1
Postado
1 hora atrás, ricardo_br disse:

@Cord Pode mostar seu script? É para ver se 2 programas estão rodando ao mesmo tempo? Acho que já teve um tópico assim faz pouco tempo em "Programação -> Outros"

@echo off


set Process=AnyDesk.exe
tasklist |find /i "%Process%" 1>nul 2>nul
IF %errorlevel% EQU 0 (call :2verificacao) else (call :2verificacao)

:2verificacao
set Processo=TeamViewer.exe
tasklist |find /i "%Processo%" 1>nul 2>nul
IF %errorlevel% EQU 0 (call :teste1) else (call :teste2) 


:teste1
goto :close

 

:teste2
echo.
echo nenhum arquivo aberto
pause >nul

 

:close
exit

  • Curtir 1
Postado
1 hora atrás, ricardo_br disse:

Nessa parte aqui não faz muito sentido:

IF %errorlevel% EQU 0 (call :2verificacao) else (call :2verificacao)

 

Tanto se der em erro ou não vai para 2verificacao

@echo off


set Processo=TeamViewer.exe
set Processo=AnyDesk.exe

tasklist |find /i "%Processo%" 1>nul 2>nul
IF %errorlevel% EQU 0 (call :teste) else (call :teste2) 
echo.
Pause


:teste
goto :close

:teste2
echo.
echo teste
pause >nul

:close
exit

  • Amei 1
Postado

Se ambos os processos tiverem rodando vai para teste2, se apenas 1 dos processos tiver rodando ou nenhum vai para teste1:

 

@echo off

set Processo1=TeamViewer.exe
set Processo2=AnyDesk.exe

tasklist |find /i "%Processo1%" 1>nul 2>nul && tasklist |find /i "%Processo2%" 1>nul 2>nul
IF %errorlevel% EQU 0 (call :teste2) else (call :teste1) 

:teste1
goto :close

:teste2
echo.
echo  Tanto %Processo1% como %Processo2% estão rodando....
echo.
pause >nul

:close
exit

 

  • Obrigado 1
  • Solução
Postado

Parece que o problema pode ser que ele está chamando a mesma sub-rotina, :2verificacao, independentemente de o primeiro programa (AnyDesk.exe) estar sendo executado.

 

Tente modificar o seu script da seguinte maneira:

 

@echo off

set Process=AnyDesk.exe
tasklist | find /i "%Process%" >nul && (
  set Processo=TeamViewer.exe
  tasklist | find /i "%Processo%" >nul && (
    goto :dois_programas
  ) || (
    goto :um_programa
  )
) || (
  goto :nenhum_programa
)

:dois_programas
echo Ambos os programas estão abertos.
goto :exit

:um_programa
echo Apenas um dos programas está aberto.
goto :exit

:nenhum_programa
echo Nenhum dos programas está aberto.
goto :exit

:exit
pause

 

O código verificará primeiro se o AnyDesk.exe está sendo executado. Se ele estiver sendo executado, o script verificará se o TeamViewer.exe também está sendo executado. Se ambos estiverem em execução, o script irá para a sub-rotina :dois_programas, que exibirá a mensagem "Ambos os programas estão abertos". Se apenas um deles estiver em execução, o script irá para a sub-rotina :um_programa, que exibirá a mensagem "Apenas um dos programas está aberto". Se nenhum deles estiver em execução, o script irá para a sub-rotina :nenhum_programa, que exibirá a mensagem "Nenhum dos programas está aberto".

  • Curtir 1

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