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

Все об администрировании рабочих станций Windows 95/98/NT/2000/XP/7/8. То, чего не найдешь в бескрайних просторах Интернета. Решения тех проблем, которые не решаются типовыми ответами, которые можно получить в техподдержке Майкрософта - а именно: переустановить продукт или купить какой-ть другой лицензионный диск.


Модератор: UncleFather

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1496
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

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

Сообщение UncleFather »

Проблема:

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

Решение:

  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*количество_минут

Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение