Пишем BAT(батник) файл для запуска и остановки службы в Windows
Возникла необходимость автоматизировать для пользователей запуск и остановку определенной службы Windows. Самое просто на первый взгляд, создание батника или Bat файла Windows. Есть и другие варианты, но решил сделать именно через батник.
Вроде все не сложно, но как всегда в Windows все не так просто, или просто, но глупо.
1. Задача:
В системе есть программа, и её Бета-версия. Запуск основной, по ярлыку. Запуск Бета-версии только после запуска службы, по окончанию, отключение этой службы. Ничего сложного нет, зайти в службы и в зависимости от задачи «включить/выключить». Но вот для некоторых сотрудников это целая проблема. Поэтому пишем батник!
2. Структура батника. После поиска структуры батника, пришел к этому варианту:
3. Меняем отражение расширений файлов. По умолчанию в Windows не отражаются расширения файлов. Правим на примере Windows 10:
— открываем любую папку;
— вверху вкладка «Вид», «Параметры», «изменить параметры папок и поиска»;
— вкладка «Вид», спускаемся до поля «Скрывать расширения для. » — снимаем галку.
Теперь файлы, в частности на рабочем столе имеют вид (на примере TXT файла):
Было «Файл», Стало «Файл.txt»
4. Создаем файл батника. Создаем «txt» файл и переименовываем его в «Запуск службы.txt». Открываем, пишем наш Bat файл:
net start [имя службы в Windows] |
Где взять имя службы? Открываем службы, находим нужную, открываем и смотрим поле «Имя службы»:
В итоге у нас будет:
net start AtolLicSvc(Если служба AtolLicSvc, у вас ваш вариант) |
Сохраняем и переименовываем файл с «Запуск службы.txt» в «Запуск службы.bat«
5. Проверяем работу службы. Казалось бы все! Но нет! Это же Windows! Выскакивает окно запуска службы и пропадает. А служба как спала так и спит. Что не так? Все дело в правах админа. Вроде не сложно, но пояснять сотрудникам, запускайте с правами админа, слишком сложно для их понимания! Читаем по быстрому инфу «как запустить bat файл от имени админа автоматический?», ответ:
ничего сложного.
— «правой кнопкой мыши на файле», «свойства»;
— вкладка «ярлык», . эмм. а где она? О_о
6. Вносим правки, создаем ярлык
Логично, вкладки нет, это не ярлык! Создаем из нашего батника «Запуск службы.bat» «Ярлык»: убираем батники подальше от рук пользователей, допустим на диск D. Правой кнопкой мыши на батнике: «отправить», «рабочий стол (создать ярлык)». И вот уже на ярлыке:
— «правой кнопкой мыши на ярлыке», «свойства»;
— вкладка «ярлык», кнопка «Дополнительно»;
— ставим галку «запуск от имени администратора».
7. Повторный запуск службы через BAT файл.
После этих манипуляций, если запустить ярлык «Запуск службы.bat — ярлык», служба стартует, согласно структуре в файле «net start AtolLicSvc»
Для батника который будет останавливать службу, все тоже самое. И да, вариантов решения задачи много, спорить не буду, но описал вариант решения который применил сам.
Stop and Start a service via batch or cmd file?
How can I script a bat or cmd to stop and start a service reliably with error checking (or let me know that it wasn’t successful for whatever reason)?
18 Answers 18
Use the SC (service control) command, it gives you a lot more options than just start & stop .
tell you whether they have succeeded or failed pretty clearly. For example
If running from a batch file, you have access to the ERRORLEVEL of the return code. 0 indicates success. Anything higher indicates failure.
As a bat file, error.bat :
The output looks like this:
Return Codes
Edit 20.04.2015
The NET command does not return the documented Win32_Service class return codes (Service Not Active,Service Request Timeout, etc) and for many errors will simply return Errorlevel 2.
You can use the NET START command and then check the ERRORLEVEL environment variable, e.g.
Disclaimer: I’ve written this from the top of my head, but I think it’ll work.
I have created my personal batch file for this, mine is a little different but feel free to modify as you see fit. I created this a little while ago because I was bored and wanted to make a simple way for people to be able to input ending, starting, stopping, or setting to auto. This BAT file simply requests that you input the service name and it will do the rest for you. I didn’t realize that he was looking for something that stated any error, I must have misread that part. Though typically this can be done by inputting >> output.txt on the end of the line.
The %var% is just a way for the user to be able to input their own service into this, instead of having to go modify the bat file every time that you want to start/stop a different service.
Запуск службы windows по расписанию
Как сделать автоматический запуск(перезапуск) службы windows по расписанию? С таким вопросом я столкнулся совсем недавно, участвуя в одном из проектов по своей работе. Решение оказалось достаточно простым.
Настройка автоматического запуска или перезапуска службы осуществляет в два простых шага:
- Шаг 1 — создать сценарий запуска/перезапуска службы.
- Шаг 2 — создать задачу и настроить расписание ее выполнения.
Создание сценария для службы
Сценарий запуска/перезапуска службы представляет собой обычный батник (bat-файл), который будет содержать команды:
1. Для запуска службы
2. Для перезапуска службы
Пример файла перезапуска службы windows
В качестве примера использована служба KMService.
Итак, создаем батник (bat-файл) с командами для перезапуска службы, который будет содержать две строки:
Для обеспечения автоматического выполнения сценария перезапуска службы по расписанию: создается специальная задача, которая будет выполнять сценарий (запускать батничек).
Создание задачи в windows
Для создания задачи необходимо перейти в «Панель управления», кликнув в меню «Пуск» на пункт «Панель управления».
Далее, переходим в раздел «Администрирование».
В разделе «Администрирование» необходимо выбрать пункт «Планировщик заданий».
В окне «Планировщик заданий» кликаем правой кнопкой мыши на «Планировщик заданий» и выбираем пункт меню «Создать задачу».
В окне «Создание задачи» указываем Имя задачи, ставим галочку «Выполнить с наивысшими правами» и переходим на вкладку «Триггеры».
На вкладке «Триггеры» отображаются задаются условия запуска задачи. Для того чтобы создать расписание задачи перезапуска службы нажимаем на кнопку «Создать».
Заполняем параметры расписания задачи по перезапуску службы windows и нажимаем кнопку «Ок».
После создания расписания запуска задачи, необходимо указать наш сценарий(батничек), который должен выполнятся по расписанию. Для этого, переходим на вкладку «Действия» и нажимаем кнопку «Создать».
В окне «Создание действия» выбираем действие — «Запуск программы». После этого, нажимаем на кнопку «Обзор», ищем и выбираем наш файл со сценарием и нажимаем на кнопку «Ок».
И наконец, в окне «Создание задачи» нажимаем на кнопку «Ок».
Готово! Если все было сделано правильно, то задача будет выполняться по расписанию и будет перезапускать выбранную службу windows.
Перезапуск сервера печати (print spooler)
Итак, опишем проблему с сервисом печати (print spooler) на сервере, в крупной фирме, где есть много разномастных принтеров, подключенных в терминальном режиме.
0. Суть ошибки
Эта проблема появляется в остановке сервиса печати при работе в терминале с удаленного офиса. Ошибка происходит в терминале и принтер перестает принимать документы на печать, при чем на сервере появляется «клон» принтера, и на нем начитается выстраиваться очередь на печать, а фактически печать документов не происходит.
1. Причины ошибки
Происходит ошибка в очереди печати, или если возникла ошибка при печати на принтере, либо при отмене какого-нибудь документа, либо после небольшого разрыва связи, либо при отправке документов одновременно несколькими пользователями на печать. Тогда начинается паника в офисе, а если еще и нужно срочно распечатать какой-нибудь отчет, начинаются звонки сисадминам, с криками: «СПАСИТЕ. ПОМОГИТЕ. НЕВОЗМОЖНО РАБОТАТЬ. ДА КОГДА ЖЕ ЭТО ВСЕ ПРЕКРАТИТСЯ. » — и т. д. Вот сейчас мы и опишем, как можно исправить данную неприятность в операционных системах семейства Windows.
2. Решение
Решается данная проблема перезапуском сервера печати, т. е. службы prints pooler. (Подробно о службе prints pooler можно прочитать вот здесь). Чтоб перезапустить данную службу (как и любую другую) необходимо выполнить 2 команды:
Если операцию приходится выполнять периодически, удобнее создать «костыль» в виде файла c расширением «.bat», проще говоря «батника».
Откроем простой блокнот (удобнее всего использовать программу NotePad++) и напишем там 2 вышеназванные строчки. Сохраним этот файл, поставив расширение .bat вместо .txt, назвав его «перезапуск службы печати» или как нибудь еще, как удобнее. При запуске этого файла будет происходить перезапуск службы печати.
На скриншоте выше добавлен оператор pause в конце что бы показать работу bat-файла.
Смотрите также:
Microsoft SQL Server 2012 / 2008 включает в себя 9 предопределенных серверных ролей. Данные роли определены на уровне сервера и поэтому существуют вне баз данных. Они предусмотрены для удобства администрирования MS…
Для групповой разработки конфигурации в системе «1С:Предприятия» 8.3 используется хранилище конфигурации. Доступ разработчиков к хранилищу конфигурации может осуществляться по локальной сети (файлы базы данных располагаются на общем сетевом ресурсе), по протоколу…
IIS (Internet Information Services) – один из немногих штатных инструментов Windows, которым можно пользоваться, не ища более приемлемых альтернатив от других разработчиков. Веб-сервер IIS с поддержкой языка PHP можно использовать…