Zidentyfikuj uruchomione wystąpienia pliku wsadowego

Te nie działają dla mnie.

Jakaś pomoc w definitywnym wykreślić cztery poniższe przykłady?

PRZYKŁAD01 tylko echo „kontynuuj”, nawet jeśli mam trzy otwarte pliki CMD.exe.

---------- PRZYKŁAD 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

Otrzymuję komunikat „nieoczekiwany błąd” w PRZYKŁADZIE 02!

----------- PRZYKŁAD 02 -------

@echo off
FOR /F "usebackq tokens=2" %i IN (`tasklist ^| findstr /r /b "cmd.exe"`)
   DO taskkill /pid %%i

Otrzymuję komunikat „is first” w PRZYKŁADZIE 03, nawet przy trzech otwartych plikach CMD.exe!

----------- PRZYKŁAD 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

Możliwe jest również, że nie będę miał dostępu do polecenia Wmic w pracy, więc inna możliwość znajduje się w PRZYKŁADZIE 04 ... ale bezskutecznie.

----------- PRZYKŁAD 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

Z poważaniem, Maleck

questionAnswers(2)

yourAnswerToTheQuestion