Проблема:
Необходимо в командном файле (батнике, скрипте) сделать паузу на определенное время
Решение:
-
Первый вариант:
Делаем паузу при помощи команды «ping», пингуя localhost. При этом два прошедших пинга примерно равны одной секунде. Например, сделать паузу на 10 секунд будет выглядеть так:
Код: Выделить всё
... ping -n 20 localhost>nul ...
-
Второй вариант:
Опять пользуемся командой «ping». Но в этом случае пингуем несуществующий в ЛВС хост (узел), заданное количество раз, задавая при этом ограничение по времени для каждого пинга в 10000 миллисекунд (то есть 10 секунд). В итоге получаем задержку величиной ровно 10 секунд.
Код: Выделить всё
... PING -n 1 -w 10000 192.168.253.253 > nul ...
Варьируя параметры «n» - количество пингов и «w» - время задержки в миллисекундах, получаем достаточно точное время задержки. Например, задержимся на пять секунд:
Код: Выделить всё
... PING -n 1 -w 5000 192.168.253.253 > nul ...
Или на пятнадцать:
Код: Выделить всё
... PING -n 3 -w 5000 192.168.253.253 > nul ...
Или так:
Код: Выделить всё
... PING -n 1 -w 15000 192.168.253.253 > nul ...
При этом, второй вариант будет точнее, так как из-за особенностей выполнения команды «ping», количество пингов, указанных в параметре «n» добавляет ко времени задержки еще примерно по одной секунде на каждый пинг (то есть добавляется время, равное (n-1)*1 секунду). Поэтому для того, чтобы задержка была поточнее, параметр «n» оставляем равным единице, и варьируем только параметр «w».
Примечание: На некоторых ПК (вне зависимости от версии ОС) команда ping не ждет лимит времени, задаваемый параметром «w». В этом случае помогает задать в качестве пингуемого какой-нибудь существующий хост ЛВС, но такой, который бы не отвечал на пинги (то есть у него необходимо закрыть ICMP пакеты при помощи брандмауэра). Либо варьировать продолжительность паузы количеством запросов (параметр «n»).
-
Третий вариант:
Делаем паузу при помощи java script, запускаемого из командного файла. Время задается в миллисекундах. Пример кода:
Код: Выделить всё
@set @x=0 /* @echo off наш исполняемый код REM Пауза на 10 секунд cscript //nologo /e:jscript "%~f0" 10000 наш исполняемый код REM Пауза на 5 секунд cscript //nologo /e:jscript "%~f0" 5000 наш исполняемый код goto:eof */ if(isFinite(WScript.Arguments(0))) WScript.Sleep(WScript.Arguments(0))
-
Четвертый вариант:
Команда timeout задает время паузы в секундах, либо ожидание до нажатия клавиши.
Эта команда появилась в ОС Windows, начиная с MS Windows Vista и в серверных ОС - начиная с MS Windows Server 2003.
По материалам форума forum.ru-board.com и еще
Пауза в скрипте (сценарии) VBS делается достаточно просто:
Код: Выделить всё
WScript.Sleep количество_миллисекунд
или так:
Код: Выделить всё
WScript.Sleep 1000*количество_секунд
или так:
Код: Выделить всё
WScript.Sleep 60000*количество_минут