Назад | Перейти на главную страницу

Пакетный файл Windows 2003, функция сна / ожидания

Возможный дубликат:
Как спать в батнике?

У меня есть командный файл, который запускается как запланированная задача на сервере 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, могут быть другие способы сделать это.