Определить запущенные экземпляры командного файла
Это не работает для меня.
Любая помощь, чтобы определенно исправить четыре примера ниже?
EXAMPLE01 просто повторяет «продолжить», даже если у меня открыто три 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
Я получаю сообщение "Неожиданная ошибка i" сообщение в ПРИМЕРЕ 02!
----------- ПРИМЕР 02 -------
@echo off
FOR /F "usebackq tokens=2" %i IN (`tasklist ^| findstr /r /b "cmd.exe"`)
DO taskkill /pid %%i
Я получаю сообщение "сначала" сообщение в ПРИМЕРЕ 03, даже с тремя открытыми 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
С уважением, Maleck