这些对我不起作用。
任何帮助肯定纠正下面的四个例子?
示例01 只是回显“继续”,即使我打开了三个 CMD.exe。
---------- 示例 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
即使打开了三个 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
亲切的问候,马莱克