これを動作させようとしていますが、何らかの理由で、正しいと思っても else ステートメントが尊重されていないようです。その結果、else が存在しないかのようになり、コードのすべての行が実行されます。目的は、何かが実行されているかどうかを確認することです。実行されている場合は、メッセージを表示し、コマンド ウィンドウを開いたままにして、修正に必要な作業を確認できるようにし、キーが押されると、コマンド ウィンドウが閉じます。実行されていない場合は、自動的に起動し、コマンド ウィンドウを閉じて、ユーザーがそれを見えないようにします。
何が起こっているかを示す出力は次のとおりです (スペースを節約するために空白行は削除されています)。
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 . . .
コードは次のとおりです。
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."
答え1
cmd /k
同じウィンドウに cmd.exe の新しいインスタンスが生成されます。- この新しいcmd.exeのエラーレベルはcmd.exe自体の起動を指し、明らかにだった成功したので、エラーレベルは0です
- 不要なものをすべて削除するだけです
cmd /k
- をチェックすることもできますが
%errorlevel%
、これはif errorlevel x or greater
構文が何を行うかを意味するものではありません。
QPROCESSを知らなければ、失敗||
または成功の条件付き実行を使用できます&&
。https://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
)