Как сделать задержку в bat-файле

Обновлено: 21.11.2024

Вы можете использовать команду timeout для ожидания командной строки или пакетного сценария в течение указанного периода времени. Время определяется в секундах. Приведенные выше команды прервут процесс тайм-аута при нажатии любой клавиши. Вы можете использовать /NOBREAK игнорировать нажатия клавиш и ждать указанное время.

Дожидается ли пакетный файл завершения команды?

Поскольку runas является исполняемым файлом, а пакет ожидает завершения, возможно, вы можете отказаться от команды запуска вообще. Если все это не работает, вставьте 5 команд ping, это классический способ подождать ± одну секунду.

Как вы откладываете команду?

Введите команду.

  1. PAUSE — введите паузу в строке. Больше ничего здесь добавлять не нужно.
  2. TIMEOUT — введите время ожидания, где «время» заменяется количеством секунд до задержки.
  3. PING – введите адрес для проверки связи, где "адрес" – это IP-адрес компьютера или веб-сайта, который вы хотите проверить с помощью команды PING.

Что такое команда вызова в пакетном файле?

CALL [d:][путь]имя_пакетного_файла [параметры] Назначение: вызывает другой пакетный файл, а затем возвращается к текущему пакетному файлу для продолжения обработки. Обсуждение. Используется в пакетном файле для указания имени другого пакетного файла (файла с расширением .BAT).

Как заставить пакетный файл ждать?

Шаги Открыть Пуск . Щелкните логотип Windows в нижнем левом углу экрана. Откройте Блокнот. Введите блокнот, чтобы найти Блокнот, затем щелкните Блокнот в верхней части окна «Пуск». Создайте свой пакетный файл. Определите, как вы хотите отложить свой файл. Выберите место для задержки вашего файла. Введите вашу команду. Сохраните документ как пакетный файл.

Как выполнить пакетный файл?

Чтобы запустить пакетный файл с помощью проводника, выполните следующие действия. Откройте проводник. Перейдите в папку со скриптом. Дважды щелкните пакетный файл, чтобы запустить его. (Необязательно) Если вы выполняете команду, требующую прав администратора, вам необходимо запустить сценарий от имени администратора, щелкнув правой кнопкой мыши пакетный файл и выбрав «Запуск от имени администратора». Нажмите кнопку «Да»

Как запустить bat-файл в командной строке?

Запуск в командной строке Откройте Пуск . Введите cmd в пуск. Щелкните правой кнопкой мыши командную строку. Щелкните Запуск от имени администратора. Введите cd, а затем местоположение файла. Нажмите ↵ Enter. Введите полное имя файла BAT. Нажмите ↵ Enter.

Как приостановить bat-файл?

Отредактируйте файл bat, щелкнув его правой кнопкой мыши и выбрав «Редактировать» из списка. Ваш файл откроется в блокноте. Теперь добавьте слово «PAUSE» в конец вашего bat-файла. Окно командной строки будет оставаться открытым до тех пор, пока вы не нажмете ни одну клавишу.

Этот раздел научит вас одной из многих полезных вещей, которые нужно знать о языке сценариев — пакетном файле; Добавление задержки/паузы/тайм-аута в пакетный файл.

Тайм-аут

Тайм-аут

Самый простой способ сделать задержку или паузу на определенное время — это использовать стандартную команду TIMEOUT . Чтобы сделать тайм-аут, который длится ровно одну минуту, мы набираем:

Что здесь происходит?

Сначала мы используем команду TIMEOUT с параметром /T (что просто означает время ожидания), затем мы указываем количество секунд ожидания. В этом случае. 60 секунд.

Тайм-аут с параметром /NOBREAK

Если мы возьмем предыдущий пример и запустим его в BATCH-файле: timeout /t 60, то, ожидая эти 60 секунд, вы фактически сможете прервать тайм-аут, нажав любую клавишу на клавиатуре. Чтобы этого не произошло, мы просто добавляем в конец параметр /NOBREAK.

Сделав это, тайм-аут составит 60 секунд, и если вы хотите прервать тайм-аут, вам придется нажать (CTRL-C) на клавиатуре.

Тайм-аут молчания

Когда он делает тайм-аут, он будет отображать:

Чтобы скрыть сообщение, используйте аргумент NUL (для объяснения NUL: нажмите здесь)

Пауза

Чтобы приостановить выполнение сценария, просто используйте команду PAUSE.

Появится текст Нажмите любую клавишу, чтобы продолжить. . . , затем добавьте новую строку при вводе пользователем.

Допустим, мы хотим создать программу "Hello World", и после того, как мы нажмем что-нибудь на клавиатуре, мы хотим, чтобы она вышла из программы с помощью команды EXIT.

Здесь используется команда ECHO, чтобы сказать "Hello World". Затем мы используем команду PAUSE, которая отображает «Нажмите любую клавишу, чтобы продолжить». . . а затем используем команду EXIT для завершения текущего BATCH-скрипта.

Во время паузы отображается:

Скрыть подсказку "Нажмите любую клавишу для продолжения".

Чтобы скрыть сообщение, мы перенаправляем вывод на специальное устройство с именем nul. На самом деле это не настоящее устройство, но все, что мы на него отправляем, выбрасывается.

Пинг

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

Основное использование

Это выведет на ваш пакетный файл/консоль следующее:

Скрыть выделенный текст

Просто добавьте >nul в конце команды, чтобы перенаправить ее на null.

Это ничего не выведет.

Сон

Сон

В более старых системах Windows тайм-аут недоступен. Однако мы можем использовать команду сна.

Использование

Очень понятно; спать 1 секунду. Однако команда sleep устарела и должна быть заменена командой timeout.

Команда Sleep/Wait — очень полезная команда, которая используется для приостановки на заданное время во время выполнения пакетного сценария. Другими словами, эта команда упрощает выполнение команды в течение заданного времени.

Вы можете оказаться в ситуации, когда вам нужно запустить серию командных строк одну за другой, но с временной задержкой между ними. В этом случае пригодится команда sleep. В этой статье показано, как использовать команду sleep в пакетных сценариях Windows.

Примечание. В Windows нет прямой команды Sleep, как в Linux, поэтому для достижения того же результата необходимо использовать другой метод. Кроме того, для реализации пакетного сценария не требуются привилегии root.

1) Использование тайм-аута для перехода в спящий режим

timeout — это старая команда Windows, представленная в Windows 2000, которая используется для добавления задержки между двумя задачами.

Пример 1: базовый тайм-аут в пакетном скрипте

@echo off
echo Первая задача здесь .
echo Приблизительно 10-секундная задержка.
timeout /t 10
echo Вторая задача.
пауза

Здесь у нас есть две задачи, и мы вставили сценарий тайм-аута, который ожидает 10 секунд завершения первой задачи перед запуском второй задачи.

Недостаток: это покажет ненужное «Ожидание 0 секунд, нажмите клавишу, чтобы продолжить». И когда вы нажмете любую клавишу, он перейдет к следующей задаче. Это хороший способ сообщить пользователю безопасный путь отхода от сна.

Пример 2: Тайм-аут только с клавишей CTRL + C для пропуска

Здесь /nobreak не позволяет прерывать или пропускать режим сна с помощью любой клавиши. Но нажатие комбинации клавиш CTRL+C заставит закрыть пакетную обработку и немедленно закрыть программу.

Пример 3. Переход в спящий режим без сообщения об истечении времени ожидания

Добавление части >nul, чтобы команда ничего не выводила на экран. Он подавляет обратный отсчет времени.

Еще один вариант использования тайм-аута выглядит следующим образом:

При этом откроется калькулятор, затем подождите 5 секунд, прежде чем открывать блокнот. Не забудьте включить и && между каждым блоком. Вы можете продолжить каскадирование, как показано ниже

Откроется калькулятор, затем подождите 3 секунды, пока откроется блокнот, затем подождите 4 секунды, пока откроется редактор реестра.

Недостатки TIMEOUT

  • Невозможно выполнить задержку в доли секунды. т.е. вроде timeout /t 0.5 не работает. И выдаст
    сообщение об ошибке "Ошибка: указано недопустимое значение времени ожидания (/T). Допустимый диапазон: от -1 до 99999)
  • Невозможно использовать второе значение больше 99999

2) Использование Ping to Delay для перехода в спящий режим

Пинг фактически используется для определения того, отвечает ли ресурс на запрос. Ping отправляет запрос на ресурс и ждет ответа одну секунду. В результате полезно использовать его как функцию задержки. Даже если он ждет одну секунду, он может получить ответ через несколько миллисекунд. Однако, как только вы пропингуете последний пакет здесь в десятом запросе, он автоматически остановится.

Ресурс, который мы пингуем здесь, — это localhost, который представляет собой локальную петлю, и он отвечает мгновенно в течение миллисекунды, но должен ждать 1 секунду каждый. А здесь, в примере, мы ждем почти 10 секунд перед выполнением следующей строки.

Использование Ping для задержки с несуществующим IP

Здесь ждем 10 секунд. Здесь мы должны пропинговать несуществующий IP-адрес, и если он существует, он не будет работать. -w указывает на ожидание, и здесь оно ожидает 10000 мс, вы можете изменить это значение. И по умолчанию пинг будет запрашивать 4 раза до ресурса. Здесь -n 1 указывает запрос только 1 раз.

Использование Ping для задержки менее чем на 1 секунду.

Просто замените 10 000 мс на что-нибудь меньшее, чем 1000 мс. например 500 мс, как показано ниже

Использование Powershell в Command для задержки

Просто следуйте приведенному ниже простому примеру, если вы хотите использовать команды Powershell из командной строки:

введите эту команду в командной строке или пакетном файле. Эта команда будет удерживать экран в течение 5 секунд. Вы можете изменить от 5 до любого числа. Это может быть полезно в случае сбоя или проблемы с командой Windows.

Waitfor.exe — это небольшая утилита, входящая в состав Windows 7 и более поздних версий. Эта программа предназначена для прослушивания именованного сигнала и ответа на него. Посетите здесь для получения дополнительной информации.

В версии для Windows нет режима сна и ожидания команды. Лучшей альтернативой является команда Timeout, как описано выше. В Linux вы можете просто использовать: sleep n в терминале, где n — время в секундах.

Простой способ сделать это в пакетном файле до и после задачи, которую вы хотите приостановить или приостановить, выглядит следующим образом:

В этом разделе я собираюсь объяснить, как создать цикл внутри пакетной программы и как сделать пакетную программу спящей или задерживать за определенный промежуток времени.

цикл завершается, когда x становится равным 0

Пакетный код для выполнения цикла

Вывод указанного выше пакетного файла

Как создать цикл внутри пакетного файла

Чтобы создать цикл внутри пакетного файла, нам достаточно использовать метку и оператор goto.

rem Код для выполнения


не забудьте использовать ":" перед названием метки, а код, который нужно повторить или зациклить, должен быть помещен между меткой и частью метки перехода.< /p>

Чтобы выйти из цикла, мы можем задать условия с помощью оператора if


Вот пример пакетной программы для запуска цикла десять раз

Пакетный файл для 10-кратного запуска цикла

Список параметров

ПРИМЕЧАНИЕ. Значение тайм-аута, равное -1, означает бесконечное ожидание нажатия клавиши

ПараметрыОписания

timeout Указывает время ожидания в секундах. Допустимый диапазон: от -1 до 99999 секунд.

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

Отображает это справочное сообщение.

Как сделать пакетную программу задержкой или спящей

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

Описание:
Эта утилита принимает параметр тайм-аута для ожидания указанного
периода времени (в секундах) или до тех пор, пока не будет нажата какая-либо клавиша. Он также
принимает параметр для игнорирования нажатия клавиши.

Читайте также: