User login

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

Пауза в пакетном файле
Материал из OSZone.net wiki.

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

Команда ping
ping -n seconds 127.0.0.1 > nul
где seconds - желаемое число секунд +1.

Справка по команде: ping /?. См. также комментарии в обсуждении.

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

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

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

Ещё об использовании 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
rem Пример использованияrem Некоторые действияecho Сейчас %time:~0,-3%rem пауза на 15 секундcall :sleep 15rem Другие действия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 :loopgoto :EOF
http://wiki.oszone.net/index.php/%D0%9F%D0%B0%D1%83%D0%B7%D0%B0_%D0%B2_%...