首页 > 解决方案 > 检查 Windows 服务列表是否正在运行,如果不是从批处理文件启动

问题描述

我正在寻找一个批处理脚本来检查是否有一些服务正在运行,如果没有启动它们,这就是我到目前为止检查特定服务是否正在运行的内容:

for /F "tokens=3 delims=: " %%H in ('sc query "service1" ^| findstr "        STATE"') do (
  if /I "%%H" NEQ "RUNNING" (
   net start "service1"
  )

但是,我想修改这个 for 循环以检查是否有其他服务的匹配项,例如“service2”、“service3”、“service4”和“service5”,但我不知道该怎么做。是否可以将这些匹配项包含在同一个 For 循环中?

谢谢

标签: batch-filebatch-processing

解决方案


这是您可能没有考虑过的替代方案(忽略了我之前评论中的建议),它可以直接在中运行,也可以从中运行:

%SystemRoot%\System32\wbem\WMIC.exe Service Where "Name='Service1' Or Name='Service2' Or Name='Service3' Or Name='Service4 Or Name='Service5 And Started='TRUE' And State !='Running'" Call StartService >NUL 2>&1

您需要自己决定是否Started='TRUE'需要该部件,但我建议您首先一定要把它留在里面。


推荐阅读