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

Ответить


Этот вопрос предназначен для предотвращения автоматической отправки форм спам-ботами.
Смайлики
:| :) :wink: :D :lol: :( :cry: 8) :o :oops: :? :x :P :evil: :twisted: :roll: :!: :?: :idea: :arrow: :mrgreen:
Ещё смайлики…

Markdown is OFF

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ВКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Как сделать паузу в командном файле

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

UncleFather » 24 дек 2012 19:35, Пн

Проблема:

Необходимо в командном файле (батнике, скрипте) сделать паузу на определенное время

Решение:

  1. Первый вариант:

    Делаем паузу при помощи команды «ping», пингуя localhost. При этом два прошедших пинга примерно равны одной секунде. Например, сделать паузу на 10 секунд будет выглядеть так:

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

    ...
    ping -n 20 localhost>nul
    ...
    

  2. Второй вариант:

    Опять пользуемся командой «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»).


  3. Третий вариант:

    Делаем паузу при помощи 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)) 

  4. Четвертый вариант:

    Команда timeout задает время паузы в секундах, либо ожидание до нажатия клавиши.
    Эта команда появилась в ОС Windows, начиная с MS Windows Vista и в серверных ОС - начиная с MS Windows Server 2003.

По материалам форума forum.ru-board.com и еще


Пауза в скрипте (сценарии) VBS делается достаточно просто:

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

WScript.Sleep количество_миллисекунд

или так:

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

WScript.Sleep 1000*количество_секунд

или так:

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

WScript.Sleep 60000*количество_минут

Вернуться к началу