Duda sencillo scrip para windows (.bat)

Hola,

No sé si el sitio más adecuado para preguntar esto... pero por lo menos los foros de ElOtroLado tienen vidilla y seguro que hay alguien que sepa hacer esto.

Tengo un script en windows que debe ejecutar una aplicación siempre y cuando esta no se esté ya ejecutando. No tenía ni idea de script y googleando he llegado a crear este código pero no me funciona ya que cuando compruebo si el proceso se está ejecutando siempre me da que YES. Tanto si es verdad como sino...

Aquí tenéis lo que me falla:

SET programa=LX.exe
SET found=N
FOR /f "tokens=*" %%a IN ('tasklist /FI "IMAGENAME eq %programa%"') DO SET found=Y

REM ---Si el proceso LX.exe (SNO) esta en la tasklist, terminamos
IF "%found%"=="Y" GOTO END



El problema que tengo es que %found% siempre vale "Y" después del for y no acabo de entender muy bien pq
mirate este codigo a ver si puedes adaptarlo a lo que buscas:
@echo off
SET programa=LX.exe
SET found=N
FOR /f "tokens=*" %%a IN ('tasklist /FI "IMAGENAME eq %programa%"') DO SET found=Y
IF "%found%"=="Y" GOTO OK
GOTO END
:OK
echo 'Ejecutandose!'
:END
echo 'No encontrado'
Sino, también puedes "matar" el proceso con un taskkill y ejecutarlo otra vez. Que se está ejecutando, pues se ejecuta de nuevo. Que no se está ejecutando, pues el taskkill no funciona y se ejecuta.
Gracias por la ayuda y perdonar por tardar en responder. Al final lo saque con un código que encontré en otro sitio. Lo de matar el proceso no me servía porque precisamente lo que hago es ejecutar un programa que consume muchos recursos y tengo que hacerlo varias veces según diferentes datos de entrada.

El objetivo de mi código script es comprobar si ya ha terminado una instancia para poder ejecutarlo de nuevo con nuevos datos de entrada

SET programa=LX.exe
SET found=N
FOR /f "tokens=*" %%a IN ('tasklist ^| findstr /i "%programa%"') DO SET found=Y

REM ---Si el proceso LX.exe (SNO) esta en la tasklist, terminamos
IF "%found%"=="Y" GOTO END

----> Aqui ejecuto y hago más cosas

:END
3 respuestas