收集每个服务的显示名称和状态

我想获得他们的显示名称和他们的状态的服务列表。

这是我曾经试过的:

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

但是,这只返回有限的服务,如磁盘等

对于内置的WMI命令行可执行文件WMIC.exe ,这是一个完美的任务。

从cmd.exe提示符处:

 For /F "Skip=1 Delims=" %A In ('"WMIC Service Get DisplayName, Name, State"') Do @For /F "Delims=" %B In ("%A") Do @Echo(%B 

从批处理文件:

 @For /F "Skip=1 Delims=" %%A In ('"WMIC Service Get DisplayName, Name, State"' ) Do @For /F "Delims=" %%B In ("%%A") Do @Echo(%%B @Pause 

尝试从批处理文件中直接获取PowerShell的帮助,例如(保存为.bat并运行它)。 在这个例子中,我把它输入到屏幕上,并给你所有的服务,只运行和STOPPED ONLY,但你可以基本上做你想要的txt文件的内容(搜索一个循环,保存一部分到一个变量,等等。)。

 @echo off&cls pushd %~dp0 echo. echo List ALL services pause PowerShell -NoProfile -ExecutionPolicy Bypass -Command "powershell Get-Service | Out-File services.txt" type services.txt echo. echo List services that are RUNNING only pause find "Running" services.txt echo. echo List services that are STOPPED only pause find "Stopped" services.txt pause :cleanup del /f services.txt