среда, 5 октября 2011 г.

Задержка (delay или sleep) в секундах в BAT файлах Windows

Начиная с Windows Vista, есть встроенная команда timeout:
c:\>timeout /?
TIMEOUT [/T] <таймаут> [/NOBREAK]
Описание:
    Принимает значение таймаута, задающего фиксированный период времени
    ожидания (в секундах), или ожидание до нажатия клавиши. Имеется также
    параметр, зaдающий игнорирование нажатий клавиш.
Параметры:
    /T <таймаут>        Время ожидания в секундах.
                        Допустимый интервал: от -1 до 99999 секунд.
    /NOBREAK            Игнорировать нажатия клавиш, ждать указанное время.
    /?                  Вывод справки по использованию.
Примечание: значение таймаута, равное -1 задает неограниченное время
            ожидания до нажатия клавиши.
Примеры:
    TIMEOUT /?
    TIMEOUT /T 10
    TIMEOUT /T 300 /NOBREAK
    TIMEOUT /T -1

Для Windows XP и более ранних версий Windows можно воспользоваться командой ping:
echo Doing something
ping -n 5 127.0.0.1 > NUL
echo Doing something
Основная идея состоит в том, что пакеты ping отправляются примерно раз в секунду. Задавая разное количество пакетов, мы получаем разную задержку.

4 комментария:

  1. Уточните с какой версии винды она появилась.
    а то пользователи могут начать писать не портабельные батники.

    ОтветитьУдалить
  2. Команда TIMEOUT появилась в Windows Vista.
    !! так же учтите. что при проблемах в сети (например отсутствие подключенного кабеля) ping выполнится быстрее, т.к. будут ошибки

    ОтветитьУдалить
    Ответы
    1. Про Windows Vista поправил. Спасибо! По идее адрес закольцованного адаптера 127.0.0.1 доступен почти всегда, поэтому даже когда сеть отключена на других адаптерах, это не должно сказываться.

      Удалить