- •Пакетные файлы. Общий подход
- •Использование переменных окружения.
- •Входные параметры для командного файла
- •Переходы и метки
- •If exist имя_файла команда
- •Примеры Создание файлов
- •Присвоение съемному диску одной и той же буквы
- •Создание поколений архивов по датам и времени
- •Создание архивов - более сложный вариант
- •Выполнение команд по расписанию
- •Остановка и запуск системных сервисов
- •Выдача значения переменной errorlevel
- •Диалог с пользователем
- •Задержки в командных файлах
- •Поиск компьютеров с запущенным приложением
- •Поиск компьютеров с запущенным приложением по списку
- •Выключение компьютеров по списку, созданному на основе сетевого окружения
- •Работа с оконными приложениями
- •Типичные ошибки
Остановка и запуск системных сервисов
Для остановки и запуска служб Win2K/XP из командной строки используется команда NET.EXE
NET.EXE STOP < имя службы >
NET.EXE START < имя службы >
Возможно использование как короткого, так и полного имени ("Dnscache" - короткое, "DNS-клиент" - полное имя службы). Имя службы, содержащее пробелы заключается в двойные кавычки. Пример перезапуска службы “DNS-клиент”
net stop "DNS-клиент"
net start "DNS-клиент"
То же, с использованием короткого имени:
net stop Dnscache
net start Dnscache
Полное имя службы можно скопировать из “Службы” – < Имя службы > - “Свойства” - “Выводимое имя”
Для управления службами гораздо удобнее воспользоваться утилитой PsService.exe из утилит PsTools Утилита не требует установки и работает в любой OS Windows. Кроме запуска и остановки службы, позволяет выполнить поиск конкретной службы на компьютерах локальной сети, опросить состояние и конфигурацию службы, изменить тип запуска, приостановить службу, продолжить, перезапустить.
Для работы с системными службами в Windows XP можно использовать утилиту sc.exe, позволяющую не только остановить/запустить службу, но и опросить ее состояние, параметры запуска и функционирования, изменить конфигурацию, а также работать не только с системными службами, но и с драйверами. При наличии прав, имеется возможнасть управлять службами не только на локальной, но и на удаленной машине. Примеры: sc.exe stop DNSCache - остановить службу DNSCache на локальном компьютере. sc \\192.168.0.1 query DNSCache - опросить состояние службы DNSCache на компьютере c IP-адресом 192.168.0.1 sc \\COMP start DNSCache запустить службу DNSCache на компьютере COMP Подсказку по работе с утилитой можно получить, введя: sc /?
Выдача значения переменной errorlevel
Этот простенький командный файл выдаст на экран значение переменной ERRORLEVEL по конкретной командной строке. Вначале выполняется проверка на наличие хотя бы одного входного параметра, и если ничего не задано, выдается сообщение об ошибке и происходит завершение по exit. Если же хотя бы один параметр задан, то входные параметры считаются командной строкой и выполняются, а значение ERRORLEVEL выдается с помощью команды ECHO. Содержимое файла (я назвал его echoEL.bat):
@echo off 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. И УЧТИТЕ, что командная строка реально ВЫПОЛНЯЕТСЯ и, например, вариант "echoEL.bat format A:" запустит форматирование дискеты в дисководе A:.