UncleFather » 24 дек 2012 19:35, Пн
Проблема:
Необходимо в командном файле (батнике, скрипте) сделать паузу на определенное время
Решение:
-
Первый вариант:
Делаем паузу при помощи команды «ping», пингуя localhost. При этом два прошедших пинга примерно равны одной секунде. Например, сделать паузу на 10 секунд будет выглядеть так:
-
Второй вариант:
Опять пользуемся командой «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 делается достаточно просто:
или так:
или так:
[b][size=150]Проблема:[/size][/b]
Необходимо в командном файле (батнике, скрипте) сделать паузу на определенное время
[b][size=150]Решение:[/size][/b]
[list=a][*] [b]Первый вариант:[/b]
Делаем паузу при помощи команды «[b][i]ping[/i][/b]», пингуя [b][i]localhost[/i][/b]. При этом два прошедших пинга примерно равны одной секунде. Например, сделать паузу на 10 секунд будет выглядеть так:
[code]
...
ping -n 20 localhost>nul
...
[/code]
[hr][/hr]
[*] [b]Второй вариант:[/b]
Опять пользуемся командой «[b][i]ping[/i][/b]». Но в этом случае пингуем [b]несуществующий[/b] в ЛВС хост (узел), заданное количество раз, задавая при этом ограничение по времени для каждого пинга в 10000 миллисекунд (то есть 10 секунд). В итоге получаем задержку величиной ровно 10 секунд.
[code]...
PING -n 1 -w 10000 192.168.253.253 > nul
...[/code]
Варьируя параметры «[b][i]n[/i][/b]» - количество пингов и «[b][i]w[/i][/b]» - время задержки в миллисекундах, получаем достаточно точное время задержки. Например, задержимся на пять секунд:
[code]...
PING -n 1 -w 5000 192.168.253.253 > nul
...[/code]
Или на пятнадцать:
[code]...
PING -n 3 -w 5000 192.168.253.253 > nul
...[/code]
Или так:
[code]...
PING -n 1 -w 15000 192.168.253.253 > nul
...[/code]
При этом, второй вариант будет точнее, так как из-за особенностей выполнения команды «[b][i]ping[/i][/b]», количество пингов, указанных в параметре «[b][i]n[/i][/b]» добавляет ко времени задержки еще примерно по одной секунде на каждый пинг (то есть добавляется время, равное [i](n-1)*1 секунду[/i]). Поэтому для того, чтобы задержка была поточнее, [size=130]параметр «[b][i]n[/i][/b]» оставляем равным единице, и варьируем только параметр «[b][i]w[/i][/b]»[/size].
[b][color=#FFFF00]Примечание:[/color][/b] На некоторых ПК (вне зависимости от версии ОС) команда [b][i]ping[/i][/b] не ждет лимит времени, задаваемый параметром «[b][i]w[/i][/b]». В этом случае помогает задать в качестве пингуемого какой-нибудь [b]существующий[/b] хост ЛВС, но такой, который бы не отвечал на пинги (то есть у него необходимо закрыть ICMP пакеты при помощи брандмауэра). Либо варьировать продолжительность паузы количеством запросов (параметр «[b][i]n[/i][/b]»).
[hr][/hr]
[*] [b]Третий вариант:[/b]
Делаем паузу при помощи java script, запускаемого из командного файла. Время задается в миллисекундах. Пример кода:
[code]
@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)) [/code]
[hr][/hr]
[*] [b]Четвертый вариант:[/b]
Команда [b][i]timeout[/i][/b] задает время паузы в секундах, либо ожидание до нажатия клавиши.
Эта команда появилась в ОС Windows, начиная с MS Windows Vista и в серверных ОС - начиная с MS Windows Server 2003.[/list]
По материалам форума [url=http://forum.ru-board.com/topic.cgi?forum=5&topic=29819&start=1580]forum.ru-board.com[/url] и [url=http://forum.ru-board.com/topic.cgi?forum=62&topic=11825&start=1300#6]еще[/url]
[hr][/hr]
[b][size=130]Пауза в скрипте (сценарии) VBS[/size][/b] делается достаточно просто:
[code]WScript.Sleep количество_миллисекунд[/code]
или так:
[code]WScript.Sleep 1000*количество_секунд[/code]
или так:
[code]WScript.Sleep 60000*количество_минут[/code]