Smitis

Silver Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Оформил для вставки в шапку Делаем паузу в командном файле стандартными средствами Windows (Для NT систем старше NT 4.0 - 2000, XP, 2003, Vista...) Чаще всего для этих целей предлагают команду ping. Лично мне совершенно не нравится этот способ. Задержка, даваемая командой ping очень неточна. Более того, она очень зависит от настроек сети. У меня был случай, когда из-за файрвола пауза получалась какая угодно, но только не та, что была задана в команде. Есть вариант с использованием утилит sleep.exe, choice.com, choice.exe. Их можно взять из Resource Kit, а choice.com из Win9x. Но ни одна из них не входит в "стандартную поставку" XP и 2000. Предлагаемый мной способ - использование WSH, в частности jscript Вариант 1. Файл sleep.js Код: if(isFinite(WScript.Arguments(0))) WScript.Sleep(WScript.Arguments(0)) | Вызов: sleep.js ms или cscript //nologo sleep.js ms Где: ms - пауза в миллисекундах Второй вариант вызова предпочтительнее, т.к. система может быть настроена на вызов wscript вместо cscript и паузы не получится. Вариант 2. Делаем гибридный файл - основной файл cmd со вставкой jscript Минимальный вариант: Код: @set @x=0 /* @echo off cscript //nologo /e:jscript "%~f0" 10000 goto:eof */ if(isFinite(WScript.Arguments(0))) WScript.Sleep(WScript.Arguments(0)) | То же с коментариями: Код: @set @x=0 /* Это строка должна быть первой. Далее идёт основной текст командного файла @echo off :: :: Сдесь что-то делаем до паузы :: :: Сдесь делаем паузу, для примера, 10 секунд (10000 миллисекунд) cscript //nologo /e:jscript "%~f0" 10000 :: :: Сдесь продолжение текста командного файла :: В нём опять могут быть паузы, например, пол секунды cscript //nologo /e:jscript "%~f0" 500 :: :: И ещё что-нибудь :: :: Следующая строка должна быть последней goto:eof */ if(isFinite(WScript.Arguments(0))) WScript.Sleep(WScript.Arguments(0)) | | Всего записей: 2833 | Зарегистр. 09-02-2003 | Отправлено: 22:07 07-01-2008 | Исправлено: Smitis, 22:30 07-01-2008 |
|