这些对我不起作用。
有什么帮助可以明确纠正以下四个示例吗?
即使我打开了三个 CMD.exe,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 中收到“意外错误”消息!
----------- 示例 02 -------
@echo off
FOR /F "usebackq tokens=2" %i IN (`tasklist ^| findstr /r /b "cmd.exe"`)
DO taskkill /pid %%i
即使打开了三个 CMD.exe,我也会在示例 03 中收到“是第一个”消息!
----------- 示例 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
亲切的问候,
马莱克