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