Как сделать задержку в bat файле
Перейти к содержимому

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

  • автор:

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

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

  • Выключение компьютера по расписанию
  • Восстановление файла конфигурации загрузки (BCD)
  • Низкоуровневое форматирование флешки
  • Восстановление MBR жёсткого диска
  • Создание, удаление и работа разделов флешки
  • Ротатор баннеров
  • Как включить и выключить гибернацию

Site

  • 301 редирект | Permanent Redirect
  • Права доступа (chmod) вида 777
  • Таблица символов Юникод в HTML
  • Якорь HTML | Закладка на веб-странице
  • Списки HTML
  • Списки HTML | Обтекание картинок
  • Списки HTML | Оформление маркеров (буллетов

Windows

  • Программы для выключения компьютера скачать
  • Выключение компьютера по расписанию
  • Задержка времени (пауза, тайм-аут) в бат-файле
  • Word и Excel | Автоматическая нумерация ячеек таблицы
  • Word | Разорвать и соединить таблицу
  • Word | Вставить диаметр, ударение, апостроф
  • Excel | Перенос строки в ячейке
  • Word | Убрать горизонтальную линию

Записки алкоголика

  • Позвонить оператору Водафон-Украина (МТС, UMC)
  • Водафон, Киевстар, Лайф | Код USSD-запросов
  • Заработок на буксах | Философия успеха
  • Заработок на буксах | Мифы и реальность

Сделать задержку в командном файле

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

Хотя чаще bat файлы выполняются полностью автоматически, в некоторых случаях может понадобиться

  • Приостановка выполнения bat файла перед повтором неудачной операции, например, подключения к сетевому диску по WebDav
  • Пауза в несколько секунд после выполнения команды, чтобы пользователь мог просмотреть результат выполнения
  • Интервал между командами, каким-то образом влияющими друг на друга

Варианты задержки в bat файле

Программа PING

Запускаю PING с нужным числом запросов (примерно 1 секунда на запрос), например, на 30 секунд:

ping localhost -n 30 >nul

Никакой информации при этом не выводится, так как вывод перенаправлен в nul ..

Преимущества: работает на всех Windows компьютеров , т.к. программа PING установлена всегда и на всех версиях.

Недостатки: время задержки кратно секунде, т.е. нельзя сделать задержку менее 1 секунды, например, в 200 или 500 мс.

Программа SLEEP.EXE из Windows Resource Kit

Консольное приложение sleep.exe входит в пакет программ Windows XP Resource Kit (или Windows 2003 Resource Kit. Из краткой справки

sleep.exe/? Usage: C:\Program Files\Windows Resource Kits\Tools\sleep.exe time-to-sleep-in-seconds C:\Program Files\Windows Resource Kits\Tools\sleep.exe [-m] time-to-sleep-in-milliseconds C:\Program Files\Windows Resource Kits\Tools\sleep.exe [-c] commited-memory ratio (1%-100%)

Поэтому для задержки в 10 секунд надо запустить

sleep.exe 10

а для задержки 500 мс надо написать

sleep.exe -m 500

Преимущества: можно задавать задержки не только в секундах, но и в миллисекундах. Хотя необходимости в коротких задержках менее секунды у меня ни разу не возникало. Если у вас есть примеры такой задачи, напишите, пожалуйста, в комментариях.

Недостатки: SLEEP.EXE не входит в стандартный комплект Windows и может оказаться, что на целевом компьютере этого файла нет, и его надо будет распространять вместе с bat файлом.

Скрипт WSH/JScript

Создаём на JScript небольшой скрипт SLEEP.JS, использующий функцию WScript.Sleep:

var milliseconds=WScript.Arguments(0); WScript.Sleep(milliseconds);

и вызываем его из командного файла, например, задержка 10 секунд:

cscript //nologo sleep.js 10000
cscript //nologo sleep.js 500

Аналогичный скрипт можно написать на VBScript.

WScript.Sleep Wscript.Arguments(0)

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

Недостатки: требуется распространять файл скрипта вместе с bat файлом или вставлять в bat файл код для создания файла скрипта, например, так:

echo WScript.Sleep Wscript.Arguments(0) > sleep.vbs cscript //nologo sleep.vbs 500 del sleep.vbs

Программа timeout.exe

Консольное приложение timeout.exe предустановлена в современных версиях Windows и выполняет задержку в секундах с возможностью выхода из ожидания по нажатию клавиши:

timeout /t 30

Если пауза не должна прерываться по нажатию клавиши, то надо добавить параметр /nobreak:

timeout /t 30 /nobreak

Время можно задавать только в секундах.

Пример использования программы timeout для задержки

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

Скрипт PowerShell

Функция Start-Sleep приостанавливает действие в скрипте или сеансе на указанное время, например, задержка 10 секунд:

powershell start-sleep -seconds 10

Программа nhmb

Программа nhmb имеет встроенный таймер и используется в bat файлах для создания задержки:

nhmb.exe "Ошибка подключения к серверу.\nСервер на найден" "Резервное копирование" "Question|RetryCancel" "30"

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

Окно Message Box со значком вопроса и кнопками Повтор, Отмена в программе nhmb

Какой вариант выбрать?

В итоге, вариантов много, а что применять? На этой картинке показано тестирование всех вариантов:

Тестирование задержки в bat файлах

Ответ зависит от задачи:

  • Если требуется просто остановить выполнение bat файла на несколько секунд без вывода информации пользователю и без ожидания действий с его стороны, то наилучший вариант – старый добрый способ на основе ping, потому что работает везде, прост в использовании и не требует дополнительных файлов.
  • Если требуется сделать задержку с выводом информации в окне командной строки, то лучше подходит timeout.exe – показывает оставшееся время, работает в современных версиях Windows и не требует дополнительных файлов.
  • Если пауза нужна с выводом информации пользователю в диалоговом окне Message Box, то nhmb.exe открывает всплывающее окно с таймером в заголовке.

Узнать больше

Файлы для скачивания

Скачать bat файлы, скрипты и исполняемые файлы, описанные в этой статье (программы nhts и nhcolor не требуются для паузы и были добавлены для оформления вывода bat файла)

Программы

nhmb — показ всплывающего окна MessageBox с таймером обратного отсчёта

nhts – добавление даты и времени к тексту

nhcolor – выделение части текста цветом

Наши соцсети

  • Новости nhutils в Телеграм

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

Сообщения: 6021
Благодарности: 3491

Конфигурация компьютера
Процессор: Intel Core 2 Quad Q9300, 2500 MHz (7,5 x 333)
Материнская плата: Asus P5Q PRO
Память: Transcend 2048×2 4096 Мб (DDR2-1066 DDR2 SDRAM)
HDD: Seagate ST3250410AS (250 Гб, 7200 RPM, SATA-II) + STM31000528AS (1 Тб, 7200 RPM, SATA-II)
Видеокарта: Asus EAH3650 (RV635)
Звук: Realtek ALC1200 (встроенный)
Блок питания: ExeGate 350W
CD/DVD: Optiarc DVD RW AD-7170S
Монитор: Samsung SyncMaster 971P 19»
ОС: Windows 7 Ultimate SP1 (x64)
Индекс производительности Windows: 5,9
rem Задержка 5 секунд ping -n 6 localhost>Nul

число должно быть равно задержке+1
Это сообщение посчитали полезным следующие участники:

Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Сообщения: 446
Благодарности: 44

Еще можно версии посмотреть здесь
Пауза в пакетном файле
Это сообщение посчитали полезным следующие участники:

Сообщения: 1
Благодарности: 1

timeout /t xx
xx- время в секундах
Это сообщение посчитали полезным следующие участники:

Сообщения: 11
Благодарности: 0

Помогите исправить ошибку. Батник работает, но всплывает окно cmd, что нужно дописать чтоб не было никаких окон и подтверждений.
Код:
@echo off
timeout /t 10 /nobreak>nul
del C:\*.log

Сообщения: 992
Благодарности: 268

Super Nemo, на чистом cmd/bat — никак. Разве что запускать батник через vbs-скрипт.
Это сообщение посчитали полезным следующие участники:

Сообщения: 27449
Благодарности: 8086

Цитата Super Nemo:

@echo off
timeout /t 10 /nobreak>nul
del C:\*.log »

Сохраните в файл с расширением «.vbs»:

WScript.Sleep 10*1000 WScript.CreateObject("Scripting.FileSystemObject").DeleteFile "C:\*.log", True

и пользуйте вместо вышеприведённого кода пакетного файла.
Это сообщение посчитали полезным следующие участники:

Сообщения: 8595
Благодарности: 2127

Цитата Super Nemo:

что нужно дописать чтоб не было никаких окон и подтверждений »

Если отвлечься от весьма полезных возможностей VB-скриптов (вариант от Iska), то: Скрытие консольных окон

Это сообщение посчитали полезным следующие участники:

Сообщения: 11
Благодарности: 0

Скрипт работает как нужно(без окон). Спасибо. Маленький нюанс, батник предназначался в автозагрузку, для этого делалась задержка срабатывания. Скрипт будет работать при запуске системы?
PS: Огромная благодарность за такие оперативные ответы

Сообщения: 27449
Благодарности: 8086

Цитата Super Nemo:

Скрипт будет работать при запуске системы? »

Да. Достаточно просто создать ярлык на него в папке общей автозагрузки. Можно поместить его вызов в любое из прочих мест автозагрузки.

Как сделать задержку в командном файле

wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 10 человек(а).

Количество просмотров этой статьи: 58 416.

В этой статье:

Из этой статьи вы узнаете, как предотвратить немедленный запуск пакетного файла, когда его открывают. Есть несколько различных команд, которые можно использовать для задержки пакетного файла. Имейте в виду, что вы должны хорошо знать, как создавать пакетные файлы, прежде чем пытаться сделать его задержку.

Step 1 Откройте меню «Пуск» icon.

Откройте меню «Пуск»

Windows Start

  • Если есть готовый пакетный файл, щелкните по нему правой кнопкой мыши и в меню выберите «Изменить», чтобы открыть файл в Блокноте. Затем пропустите следующие два шага.

Step 2 Откройте Блокнот.

Откройте Блокнот. Введите блокнот , чтобы найти Блокнот, а затем нажмите «Блокнот» в верхней части меню «Пуск».

Step 3 Создайте пакетный файл.

Создайте пакетный файл. Сначала введите команду @echo off , а затем введите другие команды своего пакетного файла.

  • PAUSE — работа пакетного файла приостанавливается до тех пор, пока не будет нажата стандартная клавиша (например, пробел).
  • TIMEOUT — работа пакетного файла приостанавливается на заданное количество секунд (или до нажатия клавиши).
  • PING — работа пакетного файла приостанавливается до тех пор, пока файл не получит ответ с указанного адреса компьютера. Обычно это приводит к небольшой задержке, если пингуется рабочий адрес.

Step 5 Выберите место, куда ввести команду задержки.

Выберите место, куда ввести команду задержки. Это можно сделать в любой точке кода (но после команды «Exit», если вы ее использовали). Прокрутите вниз, найдите точку, в которой хотите приостановить работу файла, а затем введите пробел между кодом до точки задержки и кодом после этой точки.

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

  • PAUSE — просто введите pause в строке.
  • TIMEOUT — введите timeout время , где вместо «время» подставьте время (количество секунд) задержки. Например, если ввести timeout 30 , работа файла будет приостановлена на 30 секунд.
    • Чтобы запретить пользователям отменять задержку нажатием клавиши, введите timeout время /nobreak (где «время» — это количество секунд задержки).

    Step 7 Сохраните текстовый файл как пакетный файл.

    • Нажмите «Файл» > «Сохранить как».
    • Введите имя файла, а затем введите расширение .bat (например, «Пакетный_файл.bat»).
    • Откройте меню «Тип файла» и выберите «Все файлы».
    • Выберите папку для сохранения и нажмите «Сохранить».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *