Пакетный файл, чтобы проверить, запущена ли системная служба - PullRequest
5 голосов
/ 09 мая 2011

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

например,

, если служба xxxx запущена, перейдите к запуску stage2.bat иначе перейдите к echo Service notработает

Любая помощь будет оценена

Спасибо

Ответы [ 5 ]

12 голосов
/ 09 мая 2011

Аналогично Как проверить, запущен ли процесс с помощью пакетного сценария

РЕДАКТИРОВАТЬ:
Из сообщения с добавленным оператором else:

tasklist /FI "IMAGENAME eq myapp.exe" 2>NUL | find /I /N "myapp.exe">NUL
if "%ERRORLEVEL%"=="0" (
    call stage2.bat
) else (
    echo Program is not running
)

За услугу:

sc query "ServiceName" | find "RUNNING"
if "%ERRORLEVEL%"=="0" (
    call stage2.bat
) else (
    echo Program is not running
)
3 голосов
/ 09 мая 2011

прочитайте эту статью http://support.microsoft.com/kb/251192 и посмотрите SC /?

, затем попробуйте

SC QUERY

РЕДАКТИРОВАТЬ: для автоматизациипроверьте, передайте результат в поле НАЙТИ и найдите RUNNING

 SC QUERY %1 | FIND "STATE" | FIND "RUNNING" >nul
 IF ERRORLEVEL 1 (echo NOT RUNNING ) ELSE (echo RUNNING) 
0 голосов
/ 07 января 2019

Прежде всего вам могут потребоваться права администратора, и ни один из примеров не рассматривает это.Если вы еще не сделали нас из nircmd, вы можете начать сейчас ?

Вот как я это делаю в любом случае.Когда мой Bluetooth перестает работать ?

set _ServiceName=CSRBtAudioService
 call :SrvStat %_ServiceName%
goto :SomeWhere

:SrvStat
sc query "%1" | find "RUNNING"
    if %Errorlevel% EQU 0 ( echo: restarting %1 & nircmd elevatecmd service restart %1
    ) else ( echo: starting %1 & nircmd elevatecmd service start %1 )
exit /b
0 голосов
/ 10 октября 2013

Мое решение, потому что под Windows7 просто IF ERRORLEVEL 1 не работает и уровень ошибки равен 0, если findstr успешно или нет.

В моем случае я ищу что-то, запущенное java.exe , скажем HELLO.jar [параметр java.exe]

    wmic PROCESS LIST FULL | findstr /I java.exe | findstr /I HELLO.jar

    if ErrorLevel 1 (
        Echo OK
        msg "%username%" HELLO.jar not started
            Pause   
    ) else (
        Echo ERR
        msg "%username%" HELLO.jar already running
            Pause
        exit
    )
0 голосов
/ 02 ноября 2012
@echo off

color 1F


@sc query >%COMPUTERNAME%_START.TXT

ECHO REPORT MISSING INSTALL SERVICES >%COMPUTERNAME%_MISSING.TXT


find /I "AcPrfMgrSvc" %COMPUTERNAME%_START.TXT >nul

IF ERRORLEVEL 1 NET START "AcPrfMgrSvc"

IF ERRORLEVEL 1 ECHO AcPrfMgrSvc >>%COMPUTERNAME%_MISSING.TXT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...