Batch Loop with Timer
Hi I'm new to batch and I am running into a issue. What i'm looking to do is to write a batch file that will run a command test.exe over and over for 24 hours. Once the 24 hour timer expire, the program will exit.
I am not familiar with batch and was wondering how this can be done.
Try this code below. Using ping as timer and hiding it in the background using find switches.
You can modify timer by playing with ping command and to exit play with %n% variable.
This code re-runs test approx every 30 minutes and runs only 4 times
@Echo off
SET n=0
:Loop
SET /A n=n+1
test.exe
Ping 1.1.1.1 -n 1000 -w 1 | find /V "Request timed out" | find /V "Ping" | find /V "Packets"
if %n% EQU 4 (
exit
) Else if %n% LEQ 3 (
Goto Loop
)
Use a label in your batch file to create a loop. Inside the loop, execute the test.exe.
For the 24-hour execution period, I believe you can create a scheduled task to start and stop the execution. I am not sure how graceful the exit will be once the scheduled task will end.
Dunno if a double else is feasable... never tried... but here's my shot.
@Echo off
FOR /F "tokens=1" %%F IN ('ECHO %date%') DO (
set day=%%F
)
FOR /F "tokens=* delims=:." %%F IN ('ECHO %time%') DO (
set thetime=%%F
)
:Loop
START /B "test.exe"
FOR /F "tokens=1" %%F IN ('ECHO %date%') DO IF %date%==%day% IF %time% GEQ %thetime% (
GOTO Loop
) Else (
IF NOT "%date%"=="%day%" IF %time% LEQ %thetime% (
GOTO Loop
) ELSE (
IF NOT "%date%"=="%day%" IF %time% GRT %thetime% (
GOTO:EOF
)
)
精彩评论