Возможный дубликат:
Как спать в батнике?
У меня есть командный файл, который запускается как запланированная задача на сервере Windows 2003.
Этот пакетный файл просто вызывает около 20 других пакетных файлов один за другим.
Когда это выполняется, это вызывает резкий скачок на сервере и снижение производительности.
Я хотел бы иметь возможность добавлять команду типа WAIT или SLEEP между каждым из моих вызовов пакетного файла, чтобы немного распределить нагрузку.
Может ли кто-нибудь пролить свет на самый простой способ сделать это?
Правильный способ засыпания в пакетном файле - использовать timeout
команда, представленная в Windows 2000 Server и Windows XP.
Чтобы подождать 30 секунд:
timeout /t 30
Тайм-аут будет прерван, если пользователь нажмет любую клавишу; однако команда также принимает необязательный переключатель /nobreak
, который фактически игнорирует все, что пользователь может нажать, кроме явного CTRL-C
:
timeout /t 30 /nobreak
Кроме того, если вы не хотите, чтобы команда печатала обратный отсчет на экране, вы можете перенаправить ее вывод на NUL
:
timeout /t 30 /nobreak > NUL
Существует служебная программа из набора ресурсов W2K3 под названием sleep.exe, которую вы можете использовать, вызвав ее в пакетном файле и указав, сколько времени «спать», прежде чем переходить к следующей команде.
Пример:
чистое использование X: \ server \ share / Delete
спать 300
чистое использование X: \ server \ share
Лучше всего использовать ping, но вы можете найти больше способов здесь: http://drbatcher.blogspot.com/2009/10/pauses-and-delays-in-batch-scripts.html
Код, который вы ищете, выглядит так:
ping -n 11 127.0.0.1> NUL
Значение после «-n» указывает секунды ожидания.
Если вы хотите подождать 10 секунд, просто добавьте еще один пинг,
как показано в примере.
С уважением.
P.S .: Если вы используете powershell, могут быть другие способы сделать это.