Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
CheckBootSpeed - это диагностический пакет на основе скриптов PowerShell, создающий отчет о скорости загрузки Windows 7 ...
Вы когда-нибудь хотели создать установочный диск Windows, который бы автоматически установил систему, не задавая вопросо...
Если после установки Windows XP у вас перестала загружаться Windows Vista или Windows 7, вам необходимо восстановить заг...
Программа подготовки документов и ведения учетных и отчетных данных по командировкам. Используются формы, утвержденные п...
Red Button – это мощная утилита для оптимизации и очистки всех актуальных клиентских версий операционной системы Windows...

Пауза в пакетном файле

Текущий рейтинг: 4.06 (проголосовало 52)
 Посетителей: 44754 | Просмотров: 54409 (сегодня 0)  Шрифт: - +

Иногда бывает нужно приостановить выполнение пакетного файла, чтобы предыдущая команда наверняка отработала. Сделать это можно несколькими способами.

Команда ping

ping -n seconds 127.0.0.1 > nul

где seconds - желаемое число секунд + 1. Строго говоря, неизвестно, сколько на самом деле длится пауза между пингами, хотя предположительно - одну секунду. Паузу в одну секунду задать не получится, поскольку пинг проходит моментально. Справка по команде: ping /?.

Утилита sleep.exe

sleep [seconds]

где [seconds] - желаемое число секунд.


Sleep.exe в ZIP-архиве

Утилита NirCmd

Сайт утилиты Nircmd

nircmd wait [milliseconds]

где [milliseconds] - желаемое число миллисекунд (1/1000 секунды). Oб использовании NirCmd также рассказывается в статье Создание ярлыков при установке системы

Утилита Choice

Choice.exe входит в состав Resource Kit. Choice.com можно взять из состава Windows 9x/ME.

choice /n /t seconds /d y

где seconds - желаемое число секунд.

Использование Windows Script Host (WSH)

Пример скрипта на JScript (sleep.js):

WScript.Sleep(WScript.Arguments(0))

Использование:

cscript //nologo sleep.js [milliseconds]

где [milliseconds] - желаемое число миллисекунд (1/1000 секунды).

Пример совмещения cmd-скрипта с js-скриптом в одном гибридном скрипте (sleep-js.cmd):

@set @x=0 /*
@echo off

echo PAUSE BEGIN
:: Здесь делаем паузу 3 секунды
cscript //nologo /e:jscript "%~f0" 3000
echo PAUSE END

:: Конец CMD-части
exit /b
*/
// JS-часть
*/
WScript.Sleep(WScript.Arguments(0))

Пакетный файл

Использование (пауза на 1-60 секунд):

call :sleep [пауза]

Пример:

@echo off
:: Пример использования
:: Некоторые действия
echo Сейчас %time:~0,-3% :: пауза на 15 секунд call :sleep 15 :: Другие действия echo Сейчас %time:~0,-3% goto :EOF :sleep echo Пауза на %1 секунд... set /a ftime=%time:~6,-3%+%1 if %ftime% GEQ 60 set /a ftime-=60 :loop set ctime=%time:~6,-3% if /i %ftime% NEQ %ctime% goto :loop goto :EOF
Автор: Вадим Стеркин aka Vadikan  •  Иcточник: unattended.oszone.net  •  Опубликована: 25.12.2007
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:   скрипты, CMD, BAT, AutoIt.


Оценить статью:
Вверх
Комментарии посетителей
12.08.2011/06:13  Timofey_p

Странно почему автор не ознакомился со справкой: ping /?
Я сделал это всё в одну строку:
ping 1.1.1.1 -n 1 -w XXXXX, где ХХХХХ - время в миллисекундах.
Пояснение: 1.1.1.1 - IP-ник который точно не будет пинговаться в вашей сети (можете ввести другой), -n 1 - количество пингов.
15.08.2011/13:03  Vadikan

@Timofey_p
Вы сделали в одну строку - отлично. Мы тоже, и странно, что вы этого не заметили! Вам нужна пауза с точностью до мс? Нам нет!
27.01.2014/16:57  spnew

Добрый день. Пожалуйста, обновите ссылку на утилиту sleep.exe (битая ссылка)
02.02.2014/16:43  trash50

sleep-js.cmd(1, 1) Ошибка компиляции Microsoft JScript: Синтаксическая ошибка
07.07.2014/11:11  rubuqun

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