Пакетная петля с таймером - PullRequest
1 голос
/ 24 июня 2011

Привет, я новичок в партии, и у меня возникла проблема.Что я хочу сделать, это написать командный файл, который будет запускать команду test.exe снова и снова в течение 24 часов.По истечении 24-часового таймера программа закроется.

Я не знаком с партией и мне было интересно, как это можно сделать.

Ответы [ 3 ]

3 голосов
/ 24 июня 2011

Попробуйте этот код ниже. Использование ping в качестве таймера и скрытие его в фоновом режиме с помощью переключателей поиска.
Вы можете изменить таймер, играя с помощью команды ping и выходя из игры с переменной% n%.
Этот код повторно запускает тест примерно каждые 30 минут и запускается только 4 раза

@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
)
1 голос
/ 24 июня 2011

Используйте метку в вашем командном файле для создания цикла.Внутри цикла выполните test.exe.

Для 24-часового периода выполнения, я полагаю, вы можете создать запланированное задание для запуска и остановки выполнения.Я не уверен, насколько изящным будет выход после завершения запланированного задания.

0 голосов
/ 25 июня 2011

Не знаю, если выполнимо двойное еще ... никогда не пытался ... но вот мой выстрел.

@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
)
)
...