I’d like to write a batch file that checks to see if a process is running, and takes one action if it is, and another action if it isn’t.
I know I can use tasklist to list all running processes, but is there a simpler way to directly check on a specific process?
It seems like this should work, but it doesn’t:
tasklist /fi 'imagename eq firefox.exe' /hn | MyTask IF %MyTask%=='' GOTO DO_NOTHING 'do something here :DO_NOTHING
Using the solution provided by atzz, here is a complete working demo:
Edit: Simplified, and modified to work under both WinXP and 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
You can use ‘for /f’ construct to analyze program output.
Also, it’s a good idea to stick a
at the begginning of your script, just in case if the user has it disabled by default.