Me gustaría escribir un archivo de proceso por lotes que verifique si se está ejecutando un proceso, y toma una acción si es así, y otra acción si no es así.Dentro de un archivo por lotes, ¿cómo puedo saber si se está ejecutando un proceso?
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 es así:
tasklist /fi "imagename eq firefox.exe" /hn | MyTask
IF %MyTask%=="" GOTO DO_NOTHING
'do something here
:DO_NOTHING
Utilizando la solución aportada por atzz, aquí es una demostración de trabajo completo:
Editar: simplificado, y modificado para funcionar tanto bajo WinXP y 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
Agradable ... hay tantas gemas escondidas en cmd.exe. – Kev