I needed to run a scheduled batch job and kill it off after a certain amount of time, this was because the program would run what it needed and then run as normal (If it exists then there is no reason to use start or timeout). As it actually ran as a service I didn’t want to leave it running in this way.
As I use Taskkill on the programs exe name, obviously don’t use it if it will be run on a server where it is running other executables with the same program name.
I replaced timeout with ping as the process launched fully utilises the CPU cores.
ECHO Running the program with start allows the batch script to move on to the next line
start "DBCapture" "d:\myprogram.exe" -runparameter1 -runparameter2
ECHO Waiting 120 seconds before killing off the task
ECHO Credit For lower CPU usage, instead of using WAIT use Ping as suggested on http://ss64.com/nt/timeout.html
PING -n 121 127.0.0.1>nul
ECHO Kill the program
Taskkill /IM "myprogram.exe" /F
Credits: I replaced my use of timeout based on a suggestion on SS64.com