How to check if a service is running via batch file and start it, if it is not running?

后端 未结 14 1564
暖寄归人
暖寄归人 2020-11-30 18:15

I want to write a batch file that performs the following operations:

  • Check if a service is running
    • If is it running, quit the batch
    • If
相关标签:
14条回答
  • 2020-11-30 18:47

    Cuando se use Windows en Español, el código debe quedar asi (when using Windows in Spanish, code is):

    for /F "tokens=3 delims=: " %%H in ('sc query MYSERVICE ^| findstr "        ESTADO"') do (
      if /I "%%H" NEQ "RUNNING" (
        REM Put your code you want to execute here
        REM For example, the following line
        net start MYSERVICE
      )
    )
    

    Reemplazar MYSERVICE con el nombre del servicio que se desea procesar. Puedes ver el nombre del servicio viendo las propiedades del servicio. (Replace MYSERVICE with the name of the service to be processed. You can see the name of the service on service properties.)

    0 讨论(0)
  • 2020-11-30 18:48

    To check a service's state, use sc query <SERVICE_NAME>. For if blocks in batch files, check the documentation.

    The following code will check the status of the service MyServiceName and start it if it is not running (the if block will be executed if the service is not running):

    for /F "tokens=3 delims=: " %%H in ('sc query "MyServiceName" ^| findstr "        STATE"') do (
      if /I "%%H" NEQ "RUNNING" (
       REM Put your code you want to execute here
       REM For example, the following line
       net start "MyServiceName"
      )
    )
    

    Explanation of what it does:

    1. Queries the properties of the service.
    2. Looks for the line containing the text "STATE"
    3. Tokenizes that line, and pulls out the 3rd token, which is the one containing the state of the service.
    4. Tests the resulting state against the string "RUNNING"

    As for your second question, the argument you will want to pass to net start is the service name, not the display name.

    0 讨论(0)
提交回复
热议问题