Компьютерные уроки, статьи и советы по настройке компьютера и сетевой работе - создание, оптимизация и продвижение сайтов и блогов в Сети Интернет, программирование HTML, XHTML, CSS и ява-скрипт

» » Задержка времени (пауза, тайм-аут) в бат-файле

Задержка времени (пауза, тайм-аут) в бат-файле

Вот, нашёл в Сети рабочий пример для устройства задержки времени
(пауза, тайм-аут) при выполнении команды в bat-файле:

echo wscript.Sleep 30000>"%temp%\sleep30.vbs"
cscript //nologo "%temp%\sleep30.vbs"
del "%temp%\sleep30.vbs"

Работает в любой ОС Windows, аж бегом

Зачем нужна задержка (пауза, тайм-аут) при выполнении команды в bat-файле?

У всех – по-разному.
Лично мне она (пауза) понадобилась вот для чего:

– Взял простенький bat-файл для очистки временных папок и бросил его в АВТОЗАГРУЗКУ
Прикололся, типа – чтобы этот батничек чистил временные каталоги при запуске системы.
Текст батника вытащил из стандартного Total Commander-a:

cmd /c title Очистка временной папки &cd/d %temp%&rd/s/q %temp% 2>nul &cd/d %tmp%&rd/s/q %tmp% 2>nul &cd/d C:\Windows\Prefetch &del *.pf 2>nul &cd/d C:\Windows\Temp&rd/s/q c:\windows\temp 2>nul

Всё-бы ничего, да только такая процедура очистки временных папок при загрузке –
сносит полезные файлы и система выдаёт окно ошибки

Досадно.
Однако, устройство паузы в 30 сек. решило всю проблему.
И система грузится, и папки темпов - чистятся.

Полный текст bat-файла стал теперь таким:

echo wscript.Sleep 30000>"%temp%\sleep30.vbs"
cscript //nologo "%temp%\sleep30.vbs"
del "%temp%\sleep30.vbs"
cmd /c title Очистка временной папки &cd/d %temp%&rd/s/q %temp% 2>nul &cd/d %tmp%&rd/s/q %tmp% 2>nul &cd/d C:\Windows\Prefetch &del *.pf 2>nul &cd/d C:\Windows\Temp&rd/s/q c:\windows\temp 2>nul

Прим. Лошади понятно, что изменив цифру 30 на своё значение,
можно получить другие величины паузы в секундах в bat-файле.

Начиная с VISTA, в операционных системах семейства Windows присутствует команда TIMEOUT. Эта команда принимает значение таймаута, равного фиксированному периоду времени ожидания (в секундах) до выполнения команды или ожидание до нажатия клавиши. Имеется также параметр, зaдающий игнорирование нажатий клавиш.

Синтаксис
TIMEOUT [/T] 50 [/NOBREAK]

Параметры

/T 50
Таймаут = 50 сек. Время ожидания в секундах. Допустимый интервал: от -1 до 99999 секунд. Значение, равное -1 задает неограниченное время ожидания до нажатия клавиши.
/NOBREAK
Игнорировать нажатия клавиш, ждать указанное время.
/?
Отображение справки в командной строке.

Примеры

TIMEOUT /?
TIMEOUT /T 10
TIMEOUT /T 300 /NOBREAK
TIMEOUT /T -1

Весь текст примера можно внести в bat-файл,
запустить и посмотреть, как это работает.
Впечатляет.

Комментарии (17)
  1. tehnopost.info
    Гость

    22 февраля 2016 16:09

    Гость

    22 февраля 2016 16:09

    Команда для паузы в 9 секунд:

    ping -n 10 localhost > Nul

    ЦитироватьОтветить
  2. tehnopost.info
    Гость

    10 марта 2016 05:56

    Гость

    10 марта 2016 05:56

    А как из батника запустить командную строку и запуска выполнить команды, записанные в батнике?

    ЦитироватьОтветить
    1. tehnopost.info
      it pro

      1 мая 2019 11:57

      it pro

      1 мая 2019 11:57

      вот код
      @echo off
      title ms dos
      start cmd.exe

      ЦитироватьОтветить
    2. tehnopost.info
      Lto

      4 октября 2019 19:26

      Lto

      4 октября 2019 19:26

      Stаrt cmd
      или
      start cmd.exe

      ЦитироватьОтветить
  3. tehnopost.info
    Гость

    10 марта 2016 09:24

    Гость

    10 марта 2016 09:24

    Цитата: Гость
    А как из батника запустить командную строку и запуска выполнить команды, записанные в батнике?

    Не понятно. Вам нужна консоль командной строки?
    Команды, записанные в bat-файле выполняются после клика по нему.

    ЦитироватьОтветить
  4. tehnopost.info
    Гость

    7 мая 2016 16:28

    Гость

    7 мая 2016 16:28

    А как делать задержку на десятые секунды?

    ЦитироватьОтветить
  5. tehnopost.info
    Гость

    8 мая 2016 17:22

    Гость

    8 мая 2016 17:22

    Цитата: Гость
    А как делать задержку на десятые секунды?

    точка-десятая
    .5
    Прим. Лошади понятно, что изменив цифру 30 на своё значение,
    можно получить другие величины паузы в секундах в bat-файле.
    .5 - полсекунды

    ЦитироватьОтветить
  6. tehnopost.info
    Гость

    24 июля 2016 17:13

    Гость

    24 июля 2016 17:13

    Вы же сказали что : интервал: от -1 до 99999 секунд . Вот все и подумали что нелзя менше число ставить и у вас спросили

    ЦитироватьОтветить
  7. tehnopost.info
    Гость

    11 декабря 2016 00:32

    Гость

    11 декабря 2016 00:32

    TIMEOUT /T 300 /NOBREAK так какойже ето метод если оно говорит нажать
    ctrl+c и закончить. Как сделать без етого

    ЦитироватьОтветить
    1. tehnopost.info
      Сергей

      27 мая 2019 06:45

      Сергей

      27 мая 2019 06:45

      после команды добавь >nul 2>nul чтобы получилось:
      @timeout /t 300 /nobreak >nul 2>nul

      ЦитироватьОтветить
  8. tehnopost.info
    Гость

    11 декабря 2016 12:55

    Гость

    11 декабря 2016 12:55

    Цитата: Гость
    TIMEOUT /T 300 /NOBREAK так какойже ето метод если оно говорит нажать
    ctrl+c и закончить. Как сделать без етого

    Сделать, как в начале статьи:
    echo wscript.Sleep 30000>"%temp%\sleep30.vbs"
    cscript //nologo "%temp%\sleep30.vbs"
    del "%temp%\sleep30.vbs"
    где, 30 - время в сек. Правда, 30 сек. будет висеть черное досовское окно.
    Работает в любой ОС Windows, аж бегом

    ЦитироватьОтветить
  9. tehnopost.info
    Гость

    17 декабря 2016 22:54

    Гость

    17 декабря 2016 22:54

    А если
    TIMEOUT /T 300 /NOBREAK >> NULL

    ЦитироватьОтветить
  10. tehnopost.info
    Гость

    14 октября 2018 18:41

    Гость

    14 октября 2018 18:41

    Цитата: Гость
    ping -n 10 localhost > Nul
    Это гениально черт возьми

     



    Цитата: Гость

    Цитата: Гость
    ping -n 10 localhost > Nul
    Это гениально черт возьми

     

    Конечно из говна и палок но работает!


    ЦитироватьОтветить
  11. tehnopost.info
    Гость

    20 октября 2018 20:31

    Гость

    20 октября 2018 20:31

    Мне нужен был батник для перезагрузки подключения (именно интерфейса) вайфая в win 10 с задержкой между отключением и включением. Вот листинг:


    netsh interface set interface "Wlan1" DISABLED

    TIMEOUT 10

    netsh interface set interface "Wlan1" ENABLED

     

     

     

    Всё чётко работает.


    ЦитироватьОтветить
  12. tehnopost.info
    Тень

    7 мая 2019 21:17

    Тень

    7 мая 2019 21:17

    А например timeout /t /nobreak /1 нельзя?

    /q (опечатка)

    ЦитироватьОтветить
  13. tehnopost.info
    Pupok

    27 мая 2019 06:49

    Pupok

    27 мая 2019 06:49

    Цитата: Тень
    А например timeout /t /nobreak /1 нельзя?

    Самый удобный вариант: timeout /t <время> /nobreak >nul 2>nul

    Работает на ура


    ЦитироватьОтветить
  14. tehnopost.info
    Гость

    8 августа 2019 09:55

    Гость

    8 августа 2019 09:55

    Спасибо за статью и комменты. Помогло, чтобы отключать и включать сетевой интерфейс


    ЦитироватьОтветить

Добавление комментария

  • :
  • *
  • Кликните на изображение чтобы обновить код, если он неразборчив