Automatically check if a program is (still) running. If not, start it

Is there a tool that constantly checks, if another process is running, and if not, starts it? For Windows 7-10.

I have a background process running, a piece of free software I need. Even though it works great most of the time, sometimes it just crashes and disappears without further notice. Just restarting this software would solve my issue.


Using information from this question on Stack Overflow, you could create a .bat file like so (I've used Powerpoint as an example):

tasklist /FI "IMAGENAME eq POWERPNT.EXE" 2>NUL | find /I /N "POWERPNT.EXE">NUL
if NOT "%ERRORLEVEL%" == "0" start "" "C:\Program Files\Microsoft Office\root\Office16\POWERPNT.EXE"

You could then either create a scheduled task to run this every minute or however long you can go without the process running

Alternatively, you could launch the application in an infinite loop:

@echo off
:1
"C:\Program Files\Microsoft Office\root\Office16\POWERPNT.EXE"
goto :1

This would reopen the program as soon as it's closed.


This is one of the things that you can do with AutoIt.

Create a small script that performs a check periodically. Something as simple as...

While True  
  If (ProcessExists("prog.exe") = 0) Then  
    Run("prog.exe")  
  EndIf  
  Sleep(1000)  
Wend

...or even...

While True  
  RunWait("prog.exe")  
Wend

...or more complex if you wish.

The script can be compiled to an exe and run quietly in the background.