Estou tentando fazer isso funcionar, mas por algum motivo, embora eu ache que está correto, não parece estar honrando a instrução else. Como resultado, é como se não houvesse mais nada e apenas executa todas as linhas de código. O objetivo é verificar se algo está em execução. Se for, então é suposto exibir uma mensagem e deixar a janela de comando aberta para que se possa ver o que precisa ser feito para corrigi-lo, então quando uma tecla é pressionada, a janela de comando fecha. Caso não esteja em execução, ele será iniciado para eles e fechará a janela de comando para que não seja possível vê-lo.
Aqui está a saída para mostrar o que está acontecendo (linhas em branco removidas para economizar espaço):
C:\Users\me2\Desktop>QPROCESS "Pulse.exe" 1>NUL No Process exists for pulse.exe
C:\Users\me2\Desktop>REM 0 means that it's running (ProcessFound) and 1 mean s it's not (ProcessNotFound)
C:\Users\me2\Desktop>REM cmd /k IF (1 EQU 0 goto ProcessFound) ELSE (goto Pr ocessNotFound)
C:\Users\me2\Desktop>REM cmd /k IF 1 NEQ 0 (
C:\Users\me2\Desktop>cmd /k IF ERRORLEVEL 1 (
C:\Users\me2\Desktop>echo In ProcessNotFound In ProcessNotFound
C:\Users\me2\Desktop>REM cd C:\Program Files (x86)\Common Files\Pulse Secure \JamUI\
C:\Users\me2\Desktop>REM start "" Pulse.exe -tray
C:\Users\me2\Desktop>echo In ProcessFound In ProcessFound
C:\Users\me27\Desktop>REM cls 0
Pulse Secure is running. It must be stopped by right clicking on the icon and clicking Exit.
Press any key to continue . . .
E aqui está o código:
QPROCESS "Pulse.exe">NUL
REM 0 means that it's running (ProcessFound) and 1 means it's not (ProcessNotFound)
REM cmd /k IF (%ERRORLEVEL% EQU 0 goto ProcessFound) ELSE (goto ProcessNotFound)
REM cmd /k IF %ERRORLEVEL% NEQ 0 (
cmd /k IF ERRORLEVEL 1 (
:ProcessNotFound
echo In ProcessNotFound
REM cd C:\Program Files (x86)\Common Files\Pulse Secure\JamUI\
REM start "" Pulse.exe -tray
) ELSE (
:ProcessFound
echo In ProcessFound
REM cls
@echo off
echo %ERRORLEVEL%
ECHO.
ECHO.
ECHO Pulse Secure is running.
ECHO It must be stopped by right clicking on the icon and clicking Exit.
ECHO.
ECHO.
PAUSE
)
REM IF %ERRORLEVEL% EQU 0 ECHO "Pulse Secure is running. It must be stopped by right clicking on the icon and clicking Exit."
Responder1
- Com
cmd /k
você está gerando uma nova instância de cmd.exe na mesma janela. - o nível de erro neste novo cmd.exe refere-se ao início do próprio cmd.exe, que obviamenteerabem-sucedido, então o nível de erro é 0
- simplesmente remova todos aqueles desnecessários
cmd /k
- você também pode verificar
%errorlevel%
, o que não implicaif errorlevel x or greater
o que sua sintaxe faz.
Sem conhecer seu QPROCESS, você pode usar a execução condicional em caso de falha ||
ou sucesso, &&
consultehttps://ss64.com/nt/syntax-conditional.html
QPROCESS "Pulse.exe" >NUL 2>&1 || (
echo In ProcessNotFound
REM cd C:\Program Files (x86)\Common Files\Pulse Secure\JamUI\
REM start "" Pulse.exe -tray
) && (
echo In ProcessFound
echo %ERRORLEVEL%
ECHO.
ECHO Pulse Secure is running.
ECHO It must be stopped by right clicking on the icon and clicking Exit.
ECHO.
PAUSE
)