Остановить и запустить сервис через пакетный или cmd файл? - PullRequest
273 голосов
/ 25 сентября 2008

Как я могу написать скрипт bat или cmd, чтобы остановить и надежно запустить службу с проверкой ошибок (или сообщить мне, что по какой-то причине она не удалась)?

Ответы [ 15 ]

2 голосов
/ 12 февраля 2016

Я только что использовал пример Jonas выше и создал полный список от 0 до 24 уровней ошибок. Другой пост является правильным, что net start и net stop используют только errorlevel 0 для успеха и 2 для неудачи.

Но вот что у меня сработало:

net stop postgresql-9.1
if %errorlevel% == 2 echo Access Denied - Could not stop service
if %errorlevel% == 0 echo Service stopped successfully
echo Errorlevel: %errorlevel%

Изменить stop на start и работать в обратном порядке.

1 голос
/ 26 ноября 2018

Вот команда Windows 10 для запуска восстановления системы с помощью пакета:

sc config swprv start= Auto

Вам также могут понравиться эти команды:

  • Изменить значение реестра для автоматического запуска Восстановление системы

    REG ДОБАВИТЬ "HKLM \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Windows NT \ CurrentVersion \ SystemRestore" / v DisableSR / t REG_DWORD / d 0 / f

  • Создание точки восстановления системы

    Wmic.exe / Пространство имен: \ root \ default Путь SystemRestore Вызов CreateRestorePoint "djibe спас ваш компьютер", 100, 12

  • Изменить использование диска для восстановления системы

    vssadmin resize shadowstorage / for = C: / on = C: / maxsize = 10%

Наслаждайтесь

1 голос
/ 09 мая 2018

Иногда вы можете обнаружить, что остановка не работает ..

Мой SQlServer иногда делает это. Использование следующей командной строки убивает это. Если вам действительно нужен ваш скрипт, чтобы убивать вещи, которые не прекращаются. Я бы сделал это в крайнем случае

taskkill /pid [pid number] /f
1 голос
/ 25 сентября 2008

SC может делать все со службами ... запускать, останавливать, проверять, настраивать и многое другое ...

0 голосов
/ 05 октября 2018

Я пишу службу Windows на C #, цикл остановки / удаления / сборки / установки / запуска стал слишком утомительным. Написал мини-скрипт, назвал его reploy.bat и поместил в мой выходной каталог Visual Studio (в котором есть исполняемый файл встроенной службы) для автоматизации цикла.

Просто установите эти 3 переменные

servicename: отображается на панели управления Windows Service (services.msc)

slndir: папка (не полный путь), содержащая файл вашего решения (.sln)

binpath: полный путь (не путь к папке) к исполняемому файлу службы из сборки

ПРИМЕЧАНИЕ. Для запуска команды msbuild ее необходимо запустить из командной строки разработчика Visual Studio.

SET servicename="My Amazing Service"
SET slndir="C:dir\that\contains\sln\file"
SET binpath="C:path\to\service.exe"
SET currdir=%cd%

call net stop %servicename%
call sc delete %servicename%
cd %slndir%
call msbuild 
cd %bindir%
call sc create %servicename% binpath=%binpath%
call net start %servicename%
cd %currdir%

Может быть, это кому-нибудь поможет:)

...