Командная строка windows ожидание

Команда Timeout — задать период ожидания.

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

Формат командной строки:

TIMEOUT [/T] таймаут [/NOBREAK]

Параметры командной строки:

/T таймаут — Время ожидания в секундах. Допустимый интервал: от -1 до 99999 секунд.

/NOBREAK — Игнорировать нажатия клавиш, ждать указанное время.

/? — Вывод справки по использованию.

Примечание: значение таймаута, равное -1 задает неограниченное время ожидания до нажатия клавиши.

TIMEOUT /? — отобразить краткую справку по использованию команды

TIMEOUT /T 10 установить режим ожидания 10 секунд. На экран выдается информационное сообщение с отсчетом оставшегося до завершения интервала времени ( 10, 9, 8 секунд . . . ):

Время ожидания 10 сек., нажмите любую клавишу для продолжения

Нажатие любой клавиши приведет к прерыванию таймаута и переходу к выполнению следующей команды.

TIMEOUT /T 300 /NOBREAK — установить интервал ожидания 300 секунд. Нажатие любых клавиш на клавиатуре игнорируется. Нажатие комбинации CTRL+C приведет к выдаче запроса:

Завершить выполнение пакетного файла [Y(да)/N(нет)]?

При ответе N(нет) выполняется завершение таймаута и переход к выполнению следующей команды командного файла. При ответе Y(да)/ — выполняется завершение командного файла. Вместо комбинации CTRL+C можно использовать CTRL+Break.

TIMEOUT /T -1 — ожидание нажатия любой клавиши. На экран выдается сообщение:

Нажмите любую клавишу для продолжения.

Если в данной команде использовать параметр /NOBREAK , то возможен ввод только комбинации CTRL+C

Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой «Поделиться»

Командная строка windows ожидание

Рассмотрим основные варианты организации ожидания ( паузы ) в bat / cmd файлах.

Для решения этой задачи в операционных системах, начиная с VISTA, присутствует команда timeout. Так, для ожидания 10 секунд следует выполнить команду.

Если не использовать параметр /NOBREAK, то ожидание может быть прервано нажатием любой клавиши.

Поскольку эта задача вставала перед разработчиками задолго до появления этой утилиты, те, у которых операционная система младше, могут воспользоваться накопившемся опытом.
Для организации паузы есть специальная утилита, входящая в состав Resource Kit (Ресурскита).
Пакеты Microsoft Windows Deployment Kit и Windows Resource Kit бесплатно распространяется microsoft.com. Этот пакет содержит ряд полезных и. как бы так сказать. других утилит.

Если вы уже устали бродить по бескрайним просторам сайта microsoft.com, постоянно возвращаясь на одни и те же страницы, то можете скачать эту утилиту здесь

Читайте также:  Плеер с многоканальным звуком для windows 10

Как и во многих других случаях, может помочь утилита nircmd.
(На момент написания страницы описание возможностей утилиты было здесь. C этим списком я рекомендую ознакомится, даже если для текущей задачи будет использовано другое решение.)

На просторах интернета можно найти утилиту wait.exe. Точнее, даже несколько разных, включая исходные тексты программы. Поэтому я не привожу здесь параметров вызова, смотрите их описание.

Для организации паузы можно использовать утилиты, ожидающих определенное событие заданное время.
При условии, что событие не наступит, получается ожидание требуемого интервала времени.
Так, паузу можно создать при помощи команды ping:

-n 1 — выполнить один запрос
-w 100000 — ждать ответа 100 секунд
(значение указывается в миллисекундах)
10.10.254.254 — IP адрес, который заведомо не существует в локальной сети (важно!), следовательно, никогда не ответит на ping т. е. событие не наступит.
>nul — перенаправление всего вывода команды ping в никуда.

Еще одно решение — посылать пинг на заведомо существующий адрес — т. е. самому себе. Количество посылаемых пакетов должно быть на единицу больше количества ожидаемых секунд. Так, для ожидания 5 секунд следует выполнить команду:

В том же пакете Ресурскит есть утилита choice, которую при известной доле извращенности можно использовать для тех же целей:

Для любителей экзотики.
Можно вычислить время окончания интервала ожидания и занять чем-то несчастный процессор до наступления этого события. Как результат — пауза организована только средствами bat / cmd.
Привожу слегка исправленный пример, взятый с сайта http://www.oszone.net.

0,-3% :: пауза на 15 секунд call :sleep 15 :: Другие действия echo Сейчас %time:

0,-3% pause goto :EOF :sleep echo Пауза на %1 секунд. set /a ftime=100%time:

6,-3%%%100+%1 if %ftime% GEQ 60 set /a ftime-=60 :loop set ctime=%time:

6,-3% if /i %ftime% NEQ %ctime% goto :loop exit /b 0

Данная процедура позволит организовать задержку в выполнении. Время ожидания должно быть меньше 60 сек.

Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).

Новый раздел о средствах командной строки в рамках этого же проекта расположен здесь

Команда SLEEP — задать период ожидания.

Команда SLEEP входит в состав дополнительного пакета Resource Kit и используется в командных файлах для организации режима ожидания фиксированного интервала времени.

Формат командной строки:

sleep -m миллисекунды

SLEEP /? — отобразить краткую справку по использованию команды

sleep 10 установить режим ожидания 10 секунд.

sleep –m 2500 — установить интервал ожидания 2500 миллисекунд (2.5 секунды).

Для прерывания команды sleep можно использовать комбинации клавиш CTRL+C или CTRL+Break.

В качестве альтернативы команды sleep используется команда ping для петлевого интерфейса с указанием количества эхо-запросов, соответствующего длительности задержки в секундах. Поскольку эхо-запрос для петлевого интерфейса выполняется практически мгновенно, а интервал между запросами равен 1 секунде, такой способ вполне приемлем, и не требует установки Resource Kit или копирования утилиты sleep.exe для выполнения задержки на требуемый интервал времени.

Примеры выполнения задержек с использованием ping.exe :

ping –n 1 localhost > nul — задержка на 1 секунду. Перенаправление вывода на фиктивное устройство nul используется для подавления вывода утилиты ping.exe

Читайте также:  Как убрать область предварительного просмотра windows 10

ping –n 1 127.0.0.1 > nul — то же, но с указанием IP-адреса петлевого интерфейса.

В операционных системах Windows Vista и старше, для организации задержек при выполнении командных файлов можно использовать команду TIMEOUT

Жизнь без алкоголя запойного алкоголика | Родная душа – статьи, компьютер, Интернет | Создание, оптимизация сайтов, блогов | HTML, 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-файл,
запустить и посмотреть, как это работает.
Впечатляет.

Windows CMD Запустите и дождитесь приложения по умолчанию в пакетном файле

Я пытаюсь запустить приложение по умолчанию для файла, дождаться его завершения, а затем продолжить работу с моим пакетным файлом. Проблема в том, что start, когда используется ниже, просто создает другое окно командной строки с example.doc в строке заголовка. Я могу использовать вызов вместо запуска, но затем вызов не дожидается завершения программы до перехода к следующей строке. Похоже, что запуск должен иметь исполняемое имя и не будет работать со стандартной системой приложений в Windows.

Читайте также:  Анимированный помощник windows 10

Любые идеи, как я могу это сделать, без необходимости жесткого кодирования приложения Windows в пакетном файле?

Как запустить приложение по умолчанию для файла, дождаться завершения, а затем продолжить?

Похоже, что запуск должен иметь исполняемое имя и не будет работать со стандартной системой приложений в Windows.

start , при использовании ниже просто создает другое окно командной строки с example.doc в строке заголовка

Вышеприведенная команда не будет работать, потому что в качестве названия окна вместо команды запускается %filename% .

Всегда включайте TITLE, это может быть простая строка, например «My Script» или просто пара пустых цитат «»

Согласно документации Microsoft, заголовок является необязательным, но в зависимости от других выбранных вариантов могут возникнуть проблемы, если они опущены.

Вместо этого попробуйте выполнить следующую команду:

Альтернативное решение с использованием команды открытия по умолчанию

Любые идеи, как я могу это сделать, без необходимости жесткого кодирования приложения Windows в пакетном файле?

Один из способов – использовать параметр assoc и ftype для получения команды открытия по умолчанию, используемой для файла, а затем выполнить эту команду.

Следующий пакетный файл делает это для вас (поэтому не требуется жесткое кодирование приложений Windows).

Open.cmd:

Дальнейшее чтение

  • Индекс AZ для командной строки Windows CMD – отличная ссылка для всех связанных строк Windows.
  • assoc – отображение или изменение связи между расширением файла и файловым типом
  • enabledelayedexpansion – Delayed Expansion приведет к тому, что переменные будут расширены во время выполнения, а не во время разбора.
  • for – Условно выполнить команду несколько раз.
  • for/f – команда Loop против результатов другой команды.
  • ftype – отображение или изменение ссылки между FileType и исполняемой программой.
  • start – запуск программы, командного или командного скрипта (открывается в новом окне).
  • variable edit/replace – Редактировать и заменить символы, назначенные строковой переменной.

Просто используйте имя файла непосредственно как команду, если это имя файла не является пакетным файлом, и в этом случае используйте call .

В командном файле вызов исполняемого файла подсистемы GUI блокируется, в отличие от интерактивной команды.

Используйте команду start если вы не хотите блокировать выполнение.

Существует тонкая точка о “приложении по умолчанию”, а именно о том, что тип файла может иметь зарегистрированное приложение по умолчанию для графической оболочки, например, его “Открыть с помощью…”, не имея assoc / ftype ассоциацию, или другую из этой ассоциации.

Я не совсем уверен, какие записи реестра используются для этого. Мне всегда приходилось искать его и исследовать его каждый раз. Насколько я помню, это было плохо документировано.

Но, надеюсь, у вас все в порядке с помощью схемы assoc / ftype .

Еще один тонкий момент о приложении по умолчанию: на ноутбуке я пишу это в ассоциации ftype для текстовых файлов, чтобы открыть их в “Блокноте”:

И это будет делать графическая оболочка (проводник Windows).

Оцените статью