Как сделать задержку в командном файле

Обсуждение вопросов программирования (WSH/JScript/VBScript, CMD), проблемы и решения
Закрыто
nhutils
Сообщения: 595
Зарегистрирован: 09 дек 2009, 18:08
Контактная информация:

Как сделать задержку в командном файле

Сообщение nhutils »

Иногда требуется сделать паузу между командами в командном файле.

ПАУЗА КОМАНДОЙ TIMEOUT (для Windows Vista или старше)

TIMEOUT /T <таймаут в секундах>
Преимущества: есть на всех современных компьютерах.
Недостатки: таймаут в секундах, т.е. нельзя сделать задержку менее 1 секунды, например, в 200 или 500 мс.

ПАУЗА КОМАНДНОЙ PING (для Windows XP или раньше)

Запускаем PING с нужным числом запросов (примерно 1 секунда на запрос), например, на 10 секунд:

Код: Выделить всё

ping localhost -n 10 >nul
Преимущества: работает на всех компьютерах, т.к. PING есть везде.
Недостатки: время задержки в целых секундах, т.е. нельзя сделать задержку менее 1 секунды, например, в 200 или 500 мс.

ПАУЗА С ИСПОЛЬЗОВАНИЕМ WSH/JScript

Создаём на JScript небольшой скрипт SLEEP.JS, использующий функцию WScript.Sleep:

Код: Выделить всё

if(WScript.Arguments.Unnamed.length){
  var milliseconds=WScript.Arguments.Unnamed(0);
  WScript.Sleep(milliseconds);
}
и вызываем его из командного файла, например, задержка 10 секунд:

Код: Выделить всё

cscript //nologo sleep.js 10000
или 500 мс

Код: Выделить всё

cscript //nologo sleep.js 500
Преимущества: можно задавать задержки в секундах и миллисекундах; не требуются сторонние программы.

ПАУЗА SLEEP.EXE из Windows XP Resource Kit (или Windows 2003 Resource Kit - смотря какая ОС).

Из краткой справки

Код: Выделить всё

sleep.exe/?
Usage:  C:\Program Files\Windows Resource Kits\Tools\sleep.exe      time-to-sleep-in-seconds
        C:\Program Files\Windows Resource Kits\Tools\sleep.exe [-m] time-to-sleep-in-milliseconds
        C:\Program Files\Windows Resource Kits\Tools\sleep.exe [-c] commited-memory ratio (1%-100%)
понятно, что для задержки в 10 секунд надо запустить

Код: Выделить всё

sleep.exe 10
а для задержки 500 мс надо написать

Код: Выделить всё

sleep.exe -m 500
Преимущества: можно задавать задержки в секундах и миллисекундах.
Недостатки: SLEEP.EXE не входит в стандартный комплект Windows и может оказаться, что на другом компьютере его нет.
Закрыто