当前位置:DOS资源站资料中心批处理教程 → 批处理结合VBS获取服务基本状态

批处理结合VBS获取服务基本状态

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2008-4-19 20:46:10

@echo off&title DOS资源站 www.cmdos.net
cls
echo set OBJWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")>ServiceStatus.vbs
echo set colInstalledServices = OBJWMIService.ExecQuery("Select * From Win32_Service")>>ServiceStatus.vbs
echo For Each OBJService in colInstalledServices>>ServiceStatus.vbs
echo Wscript.Echo OBJService.State ^& vbTab ^& OBJService.DisplayName>>ServiceStatus.vbs
echo Next>>ServiceStatus.vbs

cscript //nologo ServiceStatus.vbs >ServiceStatus.txt

for /f "skip=1 tokens=2 delims=:" %%i in ('find /v /c "" ServiceStatus.txt') do set total=%%i
for /f "skip=1 tokens=2 delims=:" %%a in ('find /i /c "running" ServiceStatus.txt') do set rcount=%%a
for /f "skip=1 tokens=2 delims=:" %%x in ('find /i /c "Stopped" ServiceStatus.txt') do set scount=%%x
ping -n 2 127.1 >nul 2>nul
echo 计算机系统里安装的服务总共有%total% 个。
echo.
ping -n 3 127.1 >nul 2>nul
echo 正在运行的服务有%rcount% 个。列表如下:
echo.
ping -n 3 127.1 >nul 2>nul
for /f "skip=2 delims=" %%k in ('find /i "running" ServiceStatus.txt') do echo %%k
ping -n 3 127.1 >nul 2>nul
echo.
echo 已经停止的服务有%scount% 个。列表如下:
echo.
ping -n 3 127.1 >nul 2>nul
for /f "skip=2 delims=" %%p in ('find /i "stopped" ServiceStatus.txt') do echo %%p
echo.
ping -n 3 127.1 >nul 2>nul

echo set OBJWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")>stoppable.vbs
echo set colServices = objWMIService.ExecQuery("Select * From Win32_Service Where AcceptStop = True")>>stoppable.vbs
echo For Each OBJService in colServices>>stoppable.vbs
echo Wscript.Echo OBJService.State ^& vbTab ^& OBJService.DisplayName>>stoppable.vbs
echo Next>>stoppable.vbs

cscript //nologo stoppable.vbs >stoppable.txt

for /f "skip=1 tokens=2 delims=:" %%e in ('find /i /c "running" stoppable.txt') do set srcount=%%e
echo 可以停止但是正在运行的服务有%srcount% 个。列表如下:
echo.
ping -n 3 127.1 >nul 2>nul
for /f "skip=2 delims=" %%g in ('find /i "running" stoppable.txt') do echo %%g
ping -n 3 127.1 >nul 2>nul
echo.
for /f "skip=1 tokens=2 delims=:" %%j in ('find /i /c "stopped" stoppable.txt') do set sscount=%%j
if not "%sscount%"==" 0" (
echo 可以停止而且已经停止的服务有%sscount% 个。列表如下:
echo.
ping -n 3 127.1 >nul 2>nul
for /f "skip=2 delims=" %%c in ('find /i "stopped" stoppable.txt') do echo %%c
) else echo 可以停止而且已经停止的服务有 0 个。

del ServiceStatus.vbs stoppable.vbs ServiceStatus.txt stoppable.txt >nul
pause