SC命令停止(如果尚未停止)

时间:2020-09-09 17:01:17

标签: cmd

我正在构建一个过程,该过程涉及在删除某些文件之前运行SC命令以停止服务。但是,如果该服务已经停止,则此过程将失败,因为此命令返回错误。 有没有一种方法可以跳过此错误,或者仅在尚未停止时才停止。我可以使用powershell做到这一点,但只是想知道是否存在带有某种命令行开关的选项?

1 个答案:

答案 0 :(得分:0)

需要这样做,它会在运行stop命令之前检查SCQuery的结果是否为“ 4 Running”。

请注意,我需要执行脚本检查以在3秒钟的暂停后再次输出状态,以便您可以稍作更改就可以使用它来等待状态。

@(
  SETLOCAL
  ECHO OFF
  SET "_ServiceName=Your SVC"
  SET "_Action=Stop"
  SET "_Pause=ping 5.1.1.1 -n 1 -w 3000 >NUL"
)

CALL :Main

(
  ENDLOCAL
  EXIT /B
)

:Main
  (
    SC  query "%_ServiceName%" | FIND /I "STATE              : 4  RUNNING"
  ) && (
    SC  %_Action% "%_ServiceName%"
  )
  ECHO.Pausing a few seconds...
    %_Pause%
  SC  query "%_ServiceName%" | FIND /I "STATE"
  %_Pause%
GOTO :EOF