为什么多个“find”在SC查询中不起作用

时间:2013-01-09 09:28:52

标签: servercontrol

我写了一个命令行

sc query PlugPlay | FIND "SERVICE_NAME" | FIND "STATE"

仅列出服务名称及其状态,但不提供任何输出。 请更正我如何列出服务名称及其状态(运行或停止)。

2 个答案:

答案 0 :(得分:1)

您可以使用Windows的内置findstr命令执行此操作。如果你给它找多个单词,用空格分隔,它会打印出与任何单词匹配的行(即findstr "a b"相当于grep -E 'a|b')。

sc query plugplay | findstr "SERVICE_NAME STATE"

答案 1 :(得分:0)

运行这样的两个管道不是“或”操作,它是一个“和”操作。它只会输出包含SERVICE_NAME和STATE的行(这些行将为none,因此没有输出正确)。如果你只运行第一个找到它

C:\>sc query PlugPlay | FIND "SERVICE_NAME"
SERVICE_NAME: PlugPlay

C:\>

因此STATE信息已被删除。

windows find命令过于简单且无限制,无法执行您想要的操作,但可以使用unix grep命令实现。例如,来自cygwin

$ sc query PlugPlay | grep -E 'SERVICE_NAME|STATE'
SERVICE_NAME: PlugPlay
        STATE              : 4  RUNNING
$