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

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

  • автор:

Команда 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

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

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

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

Приветствую друзья!

Коротко ответ:

Как создать батник для запуска программы с задержкой — в скрипте необходимо использовать timeout /t 5, где 5 — это количество секунд задержки.

Разбираемся

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

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

Так вот, как поставить паузу или задержку в батнике? На самом деле просто. Итак, для примера я создам батник, который открывает окно Программы и компоненты. Сперва создаем текстовый файл, далее меняем в конце .txt на .bat. Чтобы были видны расширения файлов, нужно чтобы они были включены в настройках проводника (значок в панели управления).

Кстати вместо расширения bat можно использовать cmd.

Так вот, файл создан, нажимаем правой кнопкой по нему и выбираем пункт Изменить:

Теперь пишем внутри команду задержки (пять секунд) и команду запуска окна Программы и компоненты:

timeout /t 5
start appwiz.cpl

Закрываем файл и сохраняем изменения:

Теперь после запуска этого скрипта будет идти таймер на 5 секунд, а потом запустится команда:

Удачи и добра, берегите себя!

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


Megabyte © ( 2007-04-03 13:43 ) [0]

Возможно ли как-нибудь организовать задержку(аля sleep в Дельфи) в bat-файле с помощью команд интепретатора?
Нужно вот для чего: 2 программы запускаются одновременно в автозагрузке. Надо сделать так, чтобы запускать их с временным сдвигом. Программы идентичные, но с разными настройками. Поэтому, не хочется делать задержку в самой программе, чтобы не уходить от стандарта.


Kerk © ( 2007-04-03 13:44 ) [1]

Запускай через start


Чапаев © ( 2007-04-03 13:45 ) [2]

Нельзя. Только в XP x64 есть встроенные средства, насколько я знаю.


Ega23 © ( 2007-04-03 13:46 ) [3]

цикл, вроде, можно организовать. И на дату внутри проверять.


StriderMan © ( 2007-04-03 13:47 ) [4]

wait


Megabyte © ( 2007-04-03 13:48 ) [5]


> Kerk © (03.04.07 13:44) [1]
Запускай через start

Как запускать, я знаю. Задержку надо.

> Чапаев © (03.04.07 13:45) [2]

Ясно. :/


Чапаев © ( 2007-04-03 13:48 ) [6]

«wait» не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.


StriderMan © ( 2007-04-03 13:50 ) [7]


> Чапаев © (03.04.07 13:48) [6]

да, пардон, а вроде пользовался.

как вариант написать самому консольную тормозилку 🙂


Axis_of_Evil © ( 2007-04-03 13:53 ) [8]

ping 127.0.0.1 -n задержка_в_секундах+1


axis_of_evil © ( 2007-04-03 13:53 ) [9]

Axis_of_Evil © (03.04.07 13:53) [8]
ping 127.0.0.1 -n задержка_в_секундах+1 > null


Чапаев © ( 2007-04-03 13:55 ) [10]

> [3] Ega23 © (03.04.07 13:46)
Там с точностью до минуты.


Megabyte © ( 2007-04-03 13:56 ) [11]


> Ega23 © (03.04.07 13:46) [3]
цикл, вроде, можно организовать. И на дату внутри проверять.

Да, я хотел цикл организовать, не с датой, конечно, а со своей переменной. Но что-то такой код не прокатывает. 🙂
SET tvar=1
:add
SET tvar=tvar+1

IF NOT tvar==10 (GOTO :add PAUSE) ELSE (CALL F:\Distrib\mail\get_reports.exe)
Я до этого батники не писал, в операциях плохо ориентируюсь. Думаю, такая фигня tvar=tvar+1 не прокатит.


Чапаев © ( 2007-04-03 13:58 ) [12]

> [11] Megabyte © (03.04.07 13:56)
for /?

А call применима только к батникам. Не к экзешникам.


Megabyte © ( 2007-04-03 13:58 ) [13]

Хм, ping в принципе прокатит 🙂 Спасибо


Megabyte © ( 2007-04-03 13:59 ) [14]

Нет, call можно для exe применять


( 2007-04-03 14:17 ) [15]

@for /l %%а in (1,1,200000) do @rem
или
for /l %%р in (1,1,20000) do @Echo %%p >Nul


( 2007-04-03 14:20 ) [16]

> Думаю, такая фигня tvar=tvar+1 не прокатит.

@echo off
set n=0
:a
cls
set /a n=n+1
echo N = %n%
pause
goto a


SlymRO © ( 2007-04-03 14:22 ) [17]

run.vbs
Dim Shell,Pipe
Set Shell = CreateObject(«WScript.Shell»)
Set Pipe = Shell.Exec(«progra1.exe»)
while(Pipe.status=0)
WScript.Sleep 50
Wend
WScript.Sleep 2000
Set Pipe = Shell.Exec(«progra2.exe»)
while(Pipe.status=0)
WScript.Sleep 50
Wend


Megabyte © ( 2007-04-03 14:43 ) [18]

Ого, всем спасибо 🙂

Задержка в сотых долях секунды на BAT-файлах

Стандартной команды задержки, типа sleep, в языке сценариев Windows не предусмотрено. Есть множество различных извращенных способов получить хоть какую-то задержку, например, через ping. Как сделать более точную задержку?

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

Код, реализующий задержку в 10 секунд:

@ echo off :: Задержка в 10 секунд echo %time% echo Wait 10 seconds. call :sleep 1000 echo %time% pause exit /b :sleep :: Относительно точная пауза в сотых доля секунды setlocal call :gettick set /a finish=%errorlevel%+%1 if %finish% geq 8640000 set finish=0 :slplabel call :gettick if %errorlevel% lss %finish% goto slplabel endlocal & exit /b :gettick :: Количество сотых долей секунды, прошедших с начала дня setlocal for /f "tokens=1-4 delims=:," %%a in ("%time%") do ( set h=%%a set m=%%b set s=%%c set ms=%%d ) set /a tick=ms+s*100+m*6000+h*360000 endlocal & exit /b %tick%

Задержка реализована в виде подпрограммы :sleep, получающей единственный параметр — продолжительность задержки в сотых долях секунды. Точность задержки не идеальная, но весьма неплохая. Единственны косяк может возникнуть в момент перехода времени с 23:59 на 00:00.

Похожие статьи

  • CMD скрипт, запустить из memo
  • Массовая замена оригиналов фото копиями после сохранения в Photoshop
  • Команды Cmd в консоли Delphi
  • Чтение настроек из файла на CMD/BAT
  • Чтение из буфера обмена результата cmd
  • Перейти в самую новую папку с помощью BAT-файла
  • Как на BAT-файлах проверить пуста ли папка
  • Подсчет символов в строке ШЕЛ

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

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