2013-01-09 46 views
1

工作,我寫了一個命令行爲什麼多「查找」不SC查詢

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

只列出服務名稱,它的地位,但它沒有給出任何輸出。 請改正我如何列出服務名稱及其狀態(正在運行或已停止)。

+0

可能的重複http://stackoverflow.com/questions/2613826/regular-expressions-in-findstr –

回答

0

像這樣運行兩個管道不是「或」操作,而是「和」操作。它只會輸出包含SERVICE_NAME和STATE的行(它們不會是none,所以沒有輸出是正確的)。如果你只運行第一次發現它給出

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

C:\> 

因此狀態信息已被刪除。

windows find命令太簡單了,只能做你想做的事情,但是可以使用unix grep命令來實現。從cygwin例如:

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

您可以使用Windows內置的findstr命令做到這一點。如果您給它多個單詞以查找,用空格分隔,它將打印與任何單詞匹配的行(即findstr "a b"相當於grep -E 'a|b')。

sc query plugplay | findstr "SERVICE_NAME STATE"