We recently had need to restart an app server exe automatically when the demonstration license it was running on caused the server to close regularly, annoying everyone trying to learn the system. We had need of a script (YAY) to check if it was running and restart it when required.
Requirements:
- Check to see if the app is running on start if not running, start it.
- wait for some period of time (60 seconds)
- Check to see if the app is running, if not running, start it
Flourishes:
- Date app last restarted is displayed in title
- ability to close script with a button press
- ability to cancel wait time and relaunch app now
- ability to log when app was restarted
Working on it:
checking if a process is running:
It turns out that checking if a process is running is relatively easy:
tasklist /FI "IMAGENAME eq appServer.exe" | findstr "appServer.exe" if %ERRORLEVEL% == 1 Echo No server Process found if %ERRORLEVEL% == 1 goto start
and of course, now you have to choose:
choice /T 60 /D y /C YABCDEFGHIJKLMNOPQRSTUVWXZ /N >NUL if %ERRORLEVEL% == 1 goto loop
now we start the exe
start "" "C:\Program Files (x86)\AppVision 4.0\Bin\appServer.exe"
Set the title
title appServer (re)Started at %NowDate% %NowTime% (Press X to exit script before closing appServer.exe)
Pulling it all together:
@echo off title appServer (re)Launching script started at %time:~0,2%_%time:~3,2%_%time:~6,2% (Press X to exit script before closing appServer.exe) pushd "C:\Program Files (x86)\AppVision 4.0\Bin" :loop timeout 2 >NUL rem ping 127.0.0.1 -n 2 >NUL echo. tasklist /FI "IMAGENAME eq appServer.exe" | findstr "appServer.exe" if %ERRORLEVEL% == 1 Echo No server Process found if %ERRORLEVEL% == 1 goto start echo Server process found at %time%, waiting 60 seconds echo. rem timeout 60 rem ping 127.0.0.1 -n 30 >NUL choice /T 60 /D y /C YABCDEFGHIJKLMNOPQRSTUVWXZ /N >NUL rem echo %ERRORLEVEL% if %ERRORLEVEL% == 1 goto loop goto eof :start set NowTime=%time:~0,2%_%time:~3,2%_%time:~6,2% set NowDate=%date:~10,4%_%date:~4,2%_%date:~7,2% cls echo starting start "" "C:\Program Files (x86)\AppVision 4.0\Bin\appServer.exe" title appServer (re)Started at %NowDate% %NowTime% (Press X to exit script before closing appServer.exe) choice /T 10 /D y /C YABCDEFGHIJKLMNOPQRSTUVWXZ /N >NUL rem ping 127.0.0.1 -n 11 >NUL goto loop :eof popd echo script finished due to keypress rem pause