Команда 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-файлах проверить пуста ли папка
- Подсчет символов в строке ШЕЛ