Задержки в командных файлах




Net stop Dnscache

Net start Dnscache

Полное имя службы можно скопировать из "Панель управления" - "Администрирование" - "Службы" - Имя службы - "Свойства" - "Выводимое имя".
То же самое, но в режиме командной строки: "Пуск" - "Выполнить" - services.msc.

Для управления службами гораздо удобнее воспользоваться утилитой PsService.exe из утилит PsTools Утилита не требует установки и работает в любой OS Windows. Кроме запуска и остановки, позволяет выполнить поиск конкретной службы на компьютерах локальной сети, опросить состояние и конфигурацию службы, изменить тип запуска, приостановить службу, продолжить, перезапустить.

Для работы с системными службами в Windows XP и старше, можно использовать утилиту sc.exe, позволяющую не только остановить/запустить службу, но и опросить ее состояние, параметры запуска и функционирования, изменить конфигурацию, а также работать не только с системными службами, но и с драйверами. При наличии соответствующих прав, можно управлять службами не только на локальной, но и на удаленной машине. Примеры:
sc.exe stopDNSCache - остановить службу DNSCache на локальном компьютере.
sc \\192.168.0.1 queryDNSCache - опросить состояние службы DNSCache на компьютере c IP-адресом 192.168.0.1
sc \\COMP startDNSCache запустить службу DNSCache на компьютере COMP
Подсказку по работе с утилитой можно получить, введя:
sc /?

 

Выдача значения переменной ERRORLEVEL.

Этот простенький командный файл выдаст на экран значение переменной ERRORLEVEL по конкретной командной строке. Вначале выполняется проверка на наличие хотя бы одного входного параметра, и если ничего не задано, выдается сообщение об ошибке и происходит завершение по команде exit. Если же хотя бы один параметр задан, то входные параметры считаются командной строкой и выполняются, а значение ERRORLEVEL выдается с помощью команды ECHO. Содержимое файла (я назвал его echoEL.bat):

@echooff
if "%1" NEQ "" GOTO PARMOK
ECHO Нужно задать командную строку для определения ERRORLEVEL
exit
:PARMOK
%1 %2 %3 %4 %5 %6 %7 %8
ECHO %1 %2 %3 %4 %5 %6 %7 %8 ERRORLEVEL=%ERRORLEVEL%

Примеры запуска:

echoEL.bat NET SHARE
- будет выполнена команда NET SHARE (выдать список разделяемых сетевых ресурсов) и выдан код ERRORLEVEL
echoEL.bat NET SHARE X"="C:\
- будет выполнена команда NET SHARE X:=C:\ (создать разделяемый сетевой ресурс с именем X, и путем в корневой каталог диска C:) Обратите внимание на то, что символ = заключен в двойные кавычки.
Перечисленные выше варианты задают корректную командную строку. Но попробуйте задать неверный параметр для NET.EXE или вообще несуществующую команду и вы увидите, какое значение примет ERRORLEVEL.

 


Диалог с пользователем

Для диалога с пользователем можно использовать команду:
SET /P имя переменной = текст
при выполнении которой, на экран выдается текстовое сообщение < текст > и ожидается ввод ответа. Пример - выполним запрос пароля и присвоим его значение переменной "pset":

set /p pset="Enterpassword - "
echoPasswordis - %pset%

Недостатком данного способа является невозможность продолжения выполнения командного файла при отсутствии ответа пользователя, поэтому очень часто вместо set используются сторонние программы. В составе операционных систем семейства MicrosoftWindows имеется утилита командной строки CHOICE позволяющая довольно просто реализовать диалог с пользователем и проанализировать введенные им данные, однако в разных версия ОС утилита может присутствовать в стандартной поставке (Windows 7) или входить в наборы дополнительных программных инструментов (ResourceKitWindows XP) Простейшая версия - CHOICE.COM Скачать (1.7кб), работающая во всех ОС семейства Windows.
CHOICE выдает пользователю текстовое сообщение и ожидает выбора одного из заданных вариантов ответа (нажатия клавиш на клавиатуре). По результатам выбора формируется переменная ERRORLEVEL, значение которой равно порядковому номеру выбора. По умолчанию вариантов выбора два - Y или N. Если ответ равен Y - то ERRORLEVEL=1, если N - то ERRORLEVEL=2. Можно использовать более 2-х вариантов выбора и есть возможность задать выбор по умолчанию, когда пользователь за определенное время не нажал ни одной клавиши. Формат командной строки:

CHOICE [/C[:]choices] [/N] [/S] [/T[:]c,nn] [text]
/C[:]choices - определяет допустимые варианты выбора. Если не задано - YN
/N - не выдавать варианты выбора.
/S - строчные и заглавные буквы отличаются.
/T[:]c,nn - Выбор по умолчанию равен "c" через "nn" секунд
text - Строка текста выводимая в качестве запроса

Создадим командный файл, демонстрирующий использование CHOICE. Он будет реагировать на нажатие клавиш "1","2",3" и "0". При нажатии "0" выполняется завершение, а при нажатии остальных - сообщение пользователю. Если в течении 10 секунд ничего не нажато - завершение.

@ECHO OFF
:CHOICE
CHOICE /C:1230 /T:0,10 Ваш вариант
IF %ERRORLEVEL% EQU 4 GOTO EXIT
echo Ваш выбор=%ERRORLEVEL%
GOTO CHOICE
:EXIT

Теперь, используя CHOICE вы можете создавать командные файлы, логика работы которых может определяться пользователем.


Задержки в командных файлах

Когда-то, еще в DOS, для организации ожидания в командном файле использовалась команда SLEEP, но затем она почему-то перекочевала из стандартного установочного набора Windows в дополнительный ResourceKit. Можно просто скопировать его оттуда в каталог \system32 и использовать в ваших командных файлах.

: SLEEP N - где N - количество секунд для задержки.

Если же ResourceKit нет под рукой, можно воспользоваться ранее рассмотренной командой CHOISE без вывода текста и с автоматическим формированием ответа через nn секунд (1-99):

choice.com /T:y,10 /N - задержка на 10 секунд

Более удобный способ основан на использовании утилиты ping.exe для петлевого интерфейса. Пинг для петлевого интерфейса (имя хоста - localhost или IP- адрес 127.0.0.1) выполняется без реальной передачи данных, т.е. практически мгновенно, а интервал между посылкой icmp-пакетов составляет 1 секунду. Указывая количество "пингов" с помощью ключа "-n" можно получить задержку на n секунд:

ping 127.0.0.1 -n 30 >nul - даст задержку на 30 секунд
Перенаправление вывода команды ping на фиктивное устройство nul (>nul) позволяет убрать сообщения утилиты ping.exe с экрана.

В составе команд CMD Windows 7 имеется команда TIMEOUT для организации режима ожидания заданного интервала времени, либо до нажатия любой клавиши на клавиатуре. Описание команды - по ссылке "Список команд CMD Windows"

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-22 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: