Перейти к содержимому

Как в батнике сделать задержку

  • автор:

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

Статья описывает шесть способов организации командном файле 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 в Телеграм

timeout

Pauses the command processor for the specified number of seconds. This command is typically used in batch files.

Syntax

timeout /t [/nobreak] 

Parameters

Parameter Description
/t

Specifies the decimal number of seconds (between -1 and 99999) to wait before the command processor continues processing. The value -1 causes the computer to wait indefinitely for a keystroke.
/nobreak Specifies to ignore user key strokes.
/? Displays help at the command prompt.
Remarks
  • A user keystroke resumes the command processor execution immediately, even if the timeout period has not expired.
  • When used in conjunction with the resource kit’s Sleep tool, timeout is similar to the pause command.

Examples

To pause the command processor for ten seconds, type:

timeout /t 10 

To pause the command processor for 100 seconds and ignore any keystroke, type:

timeout /t 100 /nobreak 

To pause the command processor indefinitely until a key is pressed, type:

timeout /t -1 

Related links

pause

Suspends the processing of a batch program, displaying the prompt, Press any key to continue . . .

Syntax

pause 

Parameters

Parameter Description
/? Displays help at the command prompt.

Remarks

  • If you press CTRL+C to stop a batch program, the following message appears, Terminate batch job (Y/N)? . If you press Y (for yes) in response to this message, the batch program ends and control returns to the operating system.
  • You can insert the pause command before a section of the batch file that you might not want to process. When pause suspends processing of the batch program, you can press CTRL+C and then press Y to stop the batch program.

Examples

To create a batch program that prompts the user to change disks in one of the drives, type:

@echo off :Begin copy a:*.* echo Put a new disk into Drive A pause goto begin 

In this example, all the files on the disk in Drive A are copied to the current directory. After the message prompts you to put a new disk in Drive A, the pause command suspends processing so that you can change disks and then press any key to resume processing. This batch program runs in an endless loop—the goto begin command sends the command interpreter to the Begin label of the batch file.

Related links

Feedback

Submit and view feedback for

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

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

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

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

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

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

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

Windows Start

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

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

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

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

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

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

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

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

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

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

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