Как выполнить файл cmd в цикле с задержкой между каждой итерации? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть cmd-файл 'D: \ ProgramFiles \ test.cmd'.

Я хочу написать скрипт, который будет выполнять этот test.cmd в цикле n раз, также после каждого выполнения я хочу задержку / тайм-аут 5 секунд.

Как мне поступить?

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Пример (n = 200):

FOR /L %%A IN (1,1,200) DO (
  D:/ProgramFiles/test.cmd
  timeout /t 5
)
0 голосов
/ 28 августа 2018

Команда timeout не всегда доступна. Например, при выполнении командного файла на сервере сборки, таком как Jenkins, или при запуске в более старой версии Windows. Однако есть способ, который всегда будет работать:

@ECHO OFF
FOR %%i IN (1,1,5) do (
    CALL "D:\ProgramFiles\test.cmd"
    ping 127.255.255.255 -n 1 -w 5000> nul
)

Здесь мы используем команду ping. ping 127.255.255.255 -n 1 -w 5000> nul пропингует IP-адрес 127.255.255.255. Этот адрес не будет доступен, но -w 5000 заставит команду «ждать» ответа 5000 мс = 5 с. Единственным ограничением является то, что этот метод не может быть меньше 500 мс. Любое число ниже 500 приведет к задержке в 500 мс.

Вы также можете использовать ping -n 6 localhost>nul. Это будет повторять пинг шесть раз. Обратите внимание, что вам потребуется 6 повторений, чтобы достичь задержки в 5 секунд, поскольку первый пинг будет запущен немедленно, поэтому шесть пингов означают 5-секундную задержку. Не становитесь жертвой знаменитой ошибки " fencepost "

Для получения дополнительной информации посетите веб-сайт .

0 голосов
/ 28 августа 2018

a Для цикла это то, что вы хотите. в этом случае мы говорим ему начинать считать с 1, шаги 1, заканчиваться на 5, что означает, что вы будете запускать 5 циклов. Подробнее о for, запускаемом из cmd.exe for /?

Время ожидания зависит от версии вашей ОС. В старых ОС его нет, тогда, возможно, посмотрите на старую версию с именем sleep или, в качестве альтернативы, используйте команду ping с желаемым счетчиком времени ожидания +1. timeout В некоторых версиях Windows вам не нравится /t, и поэтому вы можете использовать его без него. т.е. timeout 5

@echo off
for %%i in (1,1,5) do (
    echo We do something here..
    timeout /t 5
)

Чтобы узнать о командах Windows cmd / batch и о том, как использовать их в пакетных файлах, вы можете открыть cmd и набрать help, который выведет список команд. затем можно запустить каждый из них, а затем переключатель /?, чтобы получить полную справку по каждой команде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...