Ir ao conteúdo
  • Cadastre-se

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


Cord
Ir à solução Resolvido por Cyclop303,

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

  • Solução

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!