Жизнь без алкоголя запойного алкоголика | Родная душа – статьи, компьютер, Интернет | Создание, оптимизация сайтов, блогов | HTML, CSS, ява-скрипт.

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

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

Вот, нашёл в Сети рабочий пример для устройства задержки времени
(пауза, тайм-аут) при выполнении команды в 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-файл,
запустить и посмотреть, как это работает.
Впечатляет.

Комментарии (22)
tehnopost.info
Гость22 февраля 2016 16:09
Команда для паузы в 9 секунд:

ping -n 10 localhost > Nul

ЦитироватьОтветить
tehnopost.info
Гость10 марта 2016 05:56
А как из батника запустить командную строку и запуска выполнить команды, записанные в батнике?

ЦитироватьОтветить
tehnopost.info
Гость10 марта 2016 09:24
Цитата: Гость
А как из батника запустить командную строку и запуска выполнить команды, записанные в батнике?

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

ЦитироватьОтветить
tehnopost.info
Гость7 мая 2016 16:28
А как делать задержку на десятые секунды?

ЦитироватьОтветить
tehnopost.info
Гость8 мая 2016 17:22
Цитата: Гость
А как делать задержку на десятые секунды?

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

ЦитироватьОтветить
tehnopost.info
Гость24 июля 2016 17:13
Вы же сказали что : интервал: от -1 до 99999 секунд . Вот все и подумали что нелзя менше число ставить и у вас спросили

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

ЦитироватьОтветить
tehnopost.info
Гость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, аж бегом

ЦитироватьОтветить
tehnopost.info
Гость17 декабря 2016 22:54
А если
TIMEOUT /T 300 /NOBREAK >> NULL

ЦитироватьОтветить
tehnopost.info
Гость14 октября 2018 18:41

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

 



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

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

 

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


ЦитироватьОтветить
tehnopost.info
Гость20 октября 2018 20:31

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


netsh interface set interface "Wlan1" DISABLED

TIMEOUT 10

netsh interface set interface "Wlan1" ENABLED

 

 

 

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


ЦитироватьОтветить
tehnopost.info
it pro1 мая 2019 11:57
вот код
@echo off
title ms dos
start cmd.exe

ЦитироватьОтветить
tehnopost.info
Тень7 мая 2019 21:17
А например timeout /t /nobreak /1 нельзя?

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

ЦитироватьОтветить
tehnopost.info
Сергей27 мая 2019 06:45
после команды добавь >nul 2>nul чтобы получилось:
@timeout /t 300 /nobreak >nul 2>nul

ЦитироватьОтветить
tehnopost.info
Pupok27 мая 2019 06:49

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

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

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


ЦитироватьОтветить
tehnopost.info
Гость8 августа 2019 09:55

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


ЦитироватьОтветить
tehnopost.info
Lto4 октября 2019 19:26
Stаrt cmd
или
start cmd.exe

ЦитироватьОтветить
tehnopost.info
Дмитрий26 октября 2019 23:42
с каких это пор 0.5 меньше -1 ?)))))))))))

ЦитироватьОтветить
tehnopost.info
Гость21 ноября 2019 21:30

Благодарю за инфу.


ЦитироватьОтветить
tehnopost.info
Гость30 апреля 2020 00:47

идентичные записи .reg (абсолютный путь) .bat(абсолютный путь) и .bat(относительный путь, в зависимости от расположения файла) файлов. Как грамотно написать записи в реестр, но часть пути до программы, будет определена положением батфайла. Применяется при создании инсталлятора из винрар сфкс

последний тип особенно устраивает инсталляцию программ, т.к. пользователь может пожелать изменить место установки программы с того, которое наивно предлагает автор. а наш засланец (.bat(относительный путь)) как раз определит то место куда пользователь распаковал архив с программой и батфайлом.

(как в регфайле сделать относительный путь с переменной - я не знаю)

C:\Program Files\WPS Office 2016 10.2.0.7646 (наш bat после распаковки сфкс тут, но сама программа глубже, еще в одной папке "office6" (C:\Program Files\WPS Office 2016 10.2.0.7646\office6\wps.exe))

поясню: мы ассоциируем файлы *.doc в системе с программой wps.exe и так же пририсовываем *.doc-ам иконку из wps.exe, которая в нем по счету третья.


.reg (абсолютный путь)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\doc_auto_file\shell\open\command]
@="\"C:\\Program Files\\WPS Office 2016 10.2.0.7646\\office6\\wps.exe\" \"%1\""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\doc_auto_file\shell\open]
"Icon"="C:\\Program Files\\WPS Office 2016 10.2.0.7646\\office6\\wps.exe,3"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\doc_auto_file\DefaultIcon]
@="C:\\Program Files\\WPS Office 2016 10.2.0.7646\\office6\\wps.exe,3"


.bat (абсолютный путь)

reg add "hklm\software\Classes\doc_auto_file\shell\open\command" /ve /t reg_sz /f /d "\"C:\Program Files\WPS Office 2016 10.2.0.7646\office6\wps.exe\" \"%%1\""

reg add "hklm\software\Classes\doc_auto_file\shell\open" /v Icon /t reg_sz /f /d "C:\Program Files\WPS Office 2016 10.2.0.7646\office6\wps.exe,3"

reg add "hklm\software\Classes\doc_auto_file\DefaultIcon" /ve /t reg_sz /f /d "C:\Program Files\WPS Office 2016 10.2.0.7646\office6\wps.exe,3"


.bat (относительный путь, в зависимости от расположения файла)

reg add "hklm\software\Classes\doc_auto_file\shell\open\command" /ve /t reg_sz /f /d "\"%cd%\office6\wps.exe\" \"%%1\""

reg add "hklm\software\Classes\doc_auto_file\shell\open" /v Icon /t reg_sz /f /d "%cd%\office6\wps.exe,3"

reg add "hklm\software\Classes\doc_auto_file\DefaultIcon" /ve /t reg_sz /f /d "%cd%\office6\wps.exe,3"


:/ve это запись будет дефолт, без имени, Default. Если надо имя "Name" то - /v Name
:/f без запроса на подтверждение
:кавычки для команд с именами содержащими пробелы
:%cd% путь откуда запущен
:\" это кавычка для записи кавычки в значение (не нужна для иконок)


Все работает. проверено на ХР


ЦитироватьОтветить
tehnopost.info
Гость22 сентября 2020 10:47
Спасибо большое за столь простое и необходимое объяснение как и что надо сделать!
У меня был головняк с архивацией 1C; timeout помог "отцу русской демократии". )))
Спасибо еще раз.

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

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

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

Юзер панель

Записки алкоголика - уроки, статьи, советы. Cознание продвижения. Вино, водка, пиво - плохо! Сайт, блог, Интернет - хорошо! HTML, CSS, Ява-скрипт.