これらは私のために働いていません。
以下の4つの例を明確に修正するための助けはありますか?
CMD.exeを3つ開いていても、EXAMPLE01は「続行」をエコーします。
----------例01------------
@echo off
wmic process where name="cmd.exe" | find "cmd.exe" /c
SET ERRORLEVEL=value if "%value%" GTR 1 (
ECHO This batch is not first
ECHO quitting ...
)
if "%value%" LSS 2 ECHO continue
例02で「予期しないiエラー」メッセージが表示されます。
-----------例02-------
@echo off
FOR /F "usebackq tokens=2" %i IN (`tasklist ^| findstr /r /b "cmd.exe"`)
DO taskkill /pid %%i
例03では、3つのCMD.exeを開いていても、「最初です」というメッセージが表示されます。
-----------例03-------
@echo off
wmic process where name="cmd.exe" | find "cmd.exe" /c
if "%errorlevel%" LEQ 1 echo CMD is first
if "%errorlevel%" GTR 1 echo CMD is already running
作業中のWmicコマンドにアクセスできない可能性もあるため、例04に別の可能性がありますが、役に立ちません。
-----------例04-------
@echo off
Tasklist /FI "IMAGENAME eq cmd.exe" 2>NUL | find /I /N "cmd.exe">NUL
if "%ERRORLEVEL%"==0 do (goto Use) else (goto Cont)
:Cont
ECHO Only one instance running
pause
:Use
echo Application running already. Close this window
よろしく、マレク