segundo por plano otro manejo lotes ejemplos ejecutar desde comandos codigos batch bat automaticamente archivos archivo windows batch-file process

windows - plano - Dentro de un archivo por lotes, ¿cómo puedo saber si se está ejecutando un proceso?



manejo de variables en batch (2)

Me gustaría escribir un archivo por lotes que compruebe si se está ejecutando un proceso, y toma una acción si es así, y otra acción si no es así.

Sé que puedo usar la lista de tareas para enumerar todos los procesos en ejecución, pero ¿hay alguna manera más sencilla de verificar directamente un proceso específico?

Parece que esto debería funcionar, pero no:

tasklist /fi "imagename eq firefox.exe" /hn | MyTask IF %MyTask%=="" GOTO DO_NOTHING ''do something here :DO_NOTHING

Usando la solución provista por atzz, aquí hay una demostración completa y funcional:

Editar: simplificado y modificado para funcionar tanto en WinXP como en Vista

echo off set process_1="firefox.exe" set process_2="iexplore.exe" set ignore_result=INFO: for /f "usebackq" %%A in (`tasklist /nh /fi "imagename eq %process_1%"`) do if not %%A==%ignore_result% Exit for /f "usebackq" %%B in (`tasklist /nh /fi "imagename eq %process_2%"`) do if not %%B==%ignore_result% Exit start "C:/Program Files/Internet Explorer/iexplore.exe" www.google.com



Puede usar la construcción "for / f" para analizar la salida del programa.

set running=0 for /f "usebackq" %%T in (`tasklist /nh /fi "imagename eq firefox.exe"`) do set running=1

Además, es una buena idea poner un

setlocal EnableExtensions

al comienzo de su script, por si acaso si el usuario lo tiene deshabilitado de forma predeterminada.