Identificar instancias en ejecución de un archivo por lotes

Estos no están funcionando para mí.

¿Alguna ayuda para definitivamente corregir los cuatro ejemplos a continuación?

El EJEMPLO01 simplemente repite "continuar", incluso si tengo tres CMD.exe abiertos.

---------- EJEMPLO 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

¡Aparece el mensaje "error i inesperado" en el EJEMPLO 02!

----------- EJEMPLO 02 -------

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

Recibo el mensaje "es el primero" en el EJEMPLO 03, ¡incluso con tres CMD.exe abiertos!

----------- EJEMPLO 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

También es posible que no tenga acceso al comando de Wmic en el trabajo, por lo que, otra posibilidad se encuentra en el EJEMPLO 04 ... pero sin éxito.

----------- EJEMPLO 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

Saludos cordiales, Maleck

Respuestas a la pregunta(2)

Su respuesta a la pregunta