Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

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

Задержка (delay или sleep) в секундах в BAT файлах Windows

Начиная с Windows Vista, есть встроенная команда timeout:
c:\>timeout /? TIMEOUT [/T] <таймаут> [/NOBREAK] Описание:     Принимает значение таймаута, задающего фиксированный период времени     ожидания (в секундах), или ожидание до нажатия клавиши. Имеется также     параметр, зaдающий игнорирование нажатий клавиш. Параметры:     /T <таймаут>        Время ожидания в секундах.                         Допустимый интервал: от -1 до 99999 секунд.     /NOBREAK            Игнорировать нажатия клавиш, ждать указанное время.     /?                  Вывод справки по использованию. Примечание: значение таймаута, равное -1 задает неограниченное время             ожидания до нажатия клавиши. Примеры:     TIMEOUT /?     TIMEOUT /T 10     TIMEOUT /T 300 /NOBREAK     TIMEOUT /T -1

Для Windows XP и более ранних версий Windows можно воспользоваться командой ping:
echo Doing something ping -n 5 127.0.0.1 > NUL echo Doing something
Основная идея состоит в том, что пакеты ping отправляются примерно раз в секунду. Задавая разное количество пакетов, мы получаем разную задержку.

Задержка и ожидание в .bat ⋆ SLUSAR.SU

Преамбула. Существует .bat файл с командами подключающими сетевые диски. Он размещается в папке Автозагрузка на Windows XP. На некоторых машинах он стартует при включении и выполняется, а на остальных — нет. Поэтому его приходиться самостоятельно запускать, что, как вы уже догадались, невероятно накладно для конечного пользователя.

Это и правильно, его, по сути, не должно волновать подключение сетевых дисков, ему нужно, чтобы они уже были видны после старта системы.
Проблема была проста. На этих машинах попросту не успевала определиться сеть, из-за чего скрипт выкидывал ошибку и завершался за долю секунды. Чтобы посмотреть ошибку пришлось в конец батника прописать команду ожидания нажатия клавиши. А именно: pause .
Далее стала задача сделать так, чтобы скрипт запускался через несколько секунд после старта windows, что позволит сетевой карте определить сеть. Перерыв интернет и поняв, что команды, работающие на Висте и выше в XP бесполезны, наткнулся на такой вариант решения проблемы: в начале файла ставим команду пинга хоста, что создает нам нужную задерку в выполнении скрипта — ping 127.0.0.1 -n 30 > nul.
З0 — это секунды. По факту достаточно и 10сек.
Весь скрипт выглядит так:

ping 127.0.0.1 -n 10 > nul
 net use Z: /DELETE
 net use S: /DELETE
 net use Z: \\192.168.30.111\shara /USER:user password
 net use S: \\192.168.30.222\documents /USER:user password
 pause
 

Подробнее о командах Windows http://ab57.ru/cmd.html

Просмотры: 8 210

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

Windows
  • Bot
  • 25.01.2020
  • 2 214
  • 0
  • 4
  • 4
  • 0
  • Содержание статьи

Описание

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

Инструкция

Паузу можно создать при помощи любой команды. Например, при помощи ping:

ping -n 1 -w 100000 192.168.254.254 >nul

-n 1 - выполнить один запрос
-w 100000 - ждать ответа 100 секунд (значение указывается в миллисекундах), меняете это значение на то, которое нужно вам
192.168.254.254 - IP адрес, который заведомо не существует в локальной сети, т.е. никогда не ответит на ping, поэтому команда будет выполняться до достижения таймаута
>nul - перенаправление всего вывода команды ping в никуда.

Можно использовать утилиту sleep.exe из Ресурскита.

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

Windows
  • Bot
  • 25.01.2020
  • 3 522
  • 0
  • 23.04.2020
  • 12
  • 12
  • 0
  • Содержание статьи

Описание

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

Инструкция

Цикл организуется следующим образом:

:loop
 ... 

Паузу можно создать несколькими способами. В операционных системах Windows Vista, и более новых, для этого существует команда timeout:

timeout /t 5

где параметр /t - это время ожидания в секундах.


Другая команда, которую можно использовать для данной цели (например, в Windows XP, в которой еще не присутствовала команда timeout), это команда ping:

ping -n 1 -w 100000 192.168.254.254 >nul
  • -n 1 - выполнить один запрос
  • -w 100000 - ждать ответа 100 секунд (значение указывается в миллисекундах), меняете это значение на то, которое нужно вам
  • 192.168.254.254 - IP адрес, который заведомо не существует в локальной сети, т.е. никогда не ответит на ping, поэтому команда будет выполняться до достижения таймаута
  • >nul - перенаправление всего вывода команды ping в никуда.

Кроме этого, существует утилита sleep, которая выполняет те же функции, что и команда timeout. Данная утилита не входит в стандартный состав ни одной операционной системы Windows, и устанавливается из дополнительного пакета программного обеспечения "Windows Server 2003 Resource Kit Tools" на любую операционную систему Windows. Скачать данный пакет можно с сайта Microsoft, или нашего зеркала на Яндекс.Диск.

Использование программы sleep очень простое:

sleep 5

где цифра 5 обозначает время ожидания в 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 применять


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

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


 
{RASkov}   (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]

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


Запуск нескольких программ с задержкой в ​​пакетном файле

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

python - спит в пакетном файле

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии
.

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

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант
.Окна

- как эхо и отправить вывод консоли в файл в сценарии bat?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для T
.

Как сделать так, чтобы текстовый файл выглядел сам по себе, используя командный файл?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для
.

Открытие определенного файла с помощью командного файла?

Переполнение стека
  1. Около
  2. Продукты
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

Смотрите также