加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何收集每个服务名称及其在Windows中的状态?

发布时间:2020-12-14 02:00:58 所属栏目:Windows 来源:网络整理
导读:我想在不使用任何第三方工具的情况下获取所有service_name及其状态.到目前为止,SC命令足以获取其中一个值,例如 sc query | findstr SERVICE_NAME 但是我列出的每个SERVICE_NAME都需要状态. 解决方法 这是一个应该完成工作的命令: for /f "tokens=2" %s in (
我想在不使用任何第三方工具的情况下获取所有service_name及其状态.到目前为止,SC命令足以获取其中一个值,例如

sc query | findstr SERVICE_NAME

但是我列出的每个SERVICE_NAME都需要状态.

解决方法

这是一个应该完成工作的命令:

for /f "tokens=2" %s in ('sc query state^= all ^| find "SERVICE_NAME"') do
    @(for /f "tokens=4" %t in ('sc query %s ^| find "STATE     "') do @echo %s is %t)

这个怎么运作:

第一个sc查询state = all |找到“SERVICE_NAME”正在运行.此命令旨在为您提供服务名称,每行一个.插入符号^(我已在此处删除)是必要的,以便转义您想要影响sc命令的特殊字符而不是for命令本身.

然后/ f的初始化解析上面的输出,从每行中删除标准的“SERVICE_NAME:”前缀,为您提供纯服务名称.此时输出如下所示:

C:&;for /f "tokens=2" %s in ('sc query state^= all ^| find "SERVICE_NAME"') do @echo %s
AdobeFlashPlayerUpdateSvc
AeLookupSvc
ALG
AppIDSvc
Appinfo
AppMgmt
aspnet_state
AudioEndpointBuilder
AudioSrv

然后将此输出馈送到/ f的下一个,它运行sc query servicename,找到具有状态的行,并隔离第4个“字”(当前状态).

最后,每个服务的名称与其状态一起打印(此时,如果您愿意,您可以选择执行不同的操作).

重要说明:如果在批处理文件中运行,则百分号(例如%s)需要加倍.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读