1

我写了一个命令行

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

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

4

2 回答 2

1

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

sc query plugplay | findstr "SERVICE_NAME STATE"
于 2014-06-23T15:48:22.893 回答
0

像这样运行两个管道不是“或”操作,而是“与”操作。它只会输出同时包含 SERVICE_NAME 和 STATE 的行(这将是 none,因此没有输出是正确的)。如果你只运行第一个 find 它给出

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

C:\>

因此状态信息已被删除。

windowsfind命令太简单了,只能做你想做的事,但可以使用unix grep命令来实现。以 cygwin为例:

$ sc query PlugPlay | grep -E 'SERVICE_NAME|STATE'
SERVICE_NAME: PlugPlay
        STATE              : 4  RUNNING
$
于 2014-06-23T14:39:16.393 回答