我想获得他们的显示名称和他们的状态的服务列表。
这是我曾经试过的:
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