Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: остановка службы по PID
Показать сообщение отдельно

Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


quazar-ed, попробуйте вот так, я не учел того, что без задержки после убийства процесса информация о службах не успевает обновиться, добавил эту самую задержку.
Код: Выделить весь код
@Echo Off
Set ServiceName=JavaQuickStarterService

:: Получаем состояние службы, проверяем запущена ли она
SC queryex %ServiceName%|Find "STATE"|Find "RUNNING">Nul&&(
    rem Пробуем остановить
    Net stop %ServiceName%>nul||(
        rem Если остановить через net stop не вышло, запрашиваем PID
        For /F "tokens=3" %%A In ('SC queryex %ServiceName%^|Find "PID"') Do (
            rem Убиваем процесс вместе с дочерними, используя полученный PID
            TaskKill /F /T /PID %%A>nul
            rem Задержка, чтобы обновился статус службы после убийства процесса
            Ping -n 4 127.0.0.1>nul
        )
        rem На всякий случай
        Net stop %ServiceName% 2>nul
    )
)
rem Если служба не была запущена, или уже убита к тому времени - запускаем её
Net start %ServiceName%
Pause

Отправлено: 11:23, 29-06-2012 | #9

Название темы: остановка службы по PID