batch-file - 检查 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 循环中?
谢谢
解决方案
这是您可能没有考虑过的替代方案(忽略了我之前评论中的建议),它可以直接在cmd中运行,也可以从批处理文件中运行:
%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'
需要该部件,但我建议您首先一定要把它留在里面。
推荐阅读
- python - 使用“modeBarButtonsToAdd”或“modeBarButtons”时,Dash 无法识别“drawclosedpath”按钮
- html - 网页中什么样的元素可以设置焦点?
- swift - 属性初始化器和 init() 函数之间的区别
- java - 在 Java 中查找命理数
- javascript - 使用 IE 浏览器的 javascript 中预期的 ')'
- javascript - JQuery - 如果没有其他按钮具有保证其外观的类,则隐藏按钮
- c - 如何在 BST 中输入更多信息并使用条目号作为访问它的键?
- python-2.7 - 删除 opencv 4.2 ubuntu 16.04
- javascript - 如何获取特定 Javascript 属性的名称?
- goland - 如何禁用 GoLand“自动导入 logrus”功能?