Board logo

标题: [系统增强] 批处理版的系统驱动情况查询 [打印本页]

作者: lxzzr    时间: 2009-6-28 09:53     标题: 批处理版的系统驱动情况查询

记得以前somebody发过VBS版的....

我的这个速度有点慢....

退出的时候请返回主选菜单,按"x" 退出,以便恢复命令提示符的默认窗口大小。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. title 系统驱动情况查询
  4. echo 初始化 ...
  5. regsvr32 %windir%\system32\wshom.ocx /s
  6. set "wmic_registry=wmic /namespace:\\root\default path stdregprov call"
  7. for /f "usebackq skip=4 tokens=3 delims= " %%a in (
  8.        `"%wmic_registry% getDWORDValue ^&H80000001,"Console","ScreenBufferSize""`
  9.        ) do (
  10.        set Default_size=%%a
  11.        set Default_size=!Default_size:~0,-1!
  12. )
  13. if not exist %temp%\Default_size.tmp echo !Default_size!>%temp%\Default_size.tmp
  14. %wmic_registry% SetDWORDValue ^&H80000001,"Console","ScreenBufferSize","19661100" >nul
  15. cls
  16. if "%1" == "h" goto :loop
  17. mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",3)(window.close)&&exit
  18. :loop
  19. cls
  20. echo.
  21. echo.
  22. echo.
  23. echo.                             系统驱动情况查询                    By:lxzzr     E-mail:lxzzr@21cn.com
  24. echo.
  25. echo.
  26. echo.                    
  27. echo.
  28. echo.
  29. set temp_m=
  30. set temp_n=
  31. set temp_l=
  32. set /p x=Please enter the filter criteria [0.State 1.Startmode x.exit]:
  33. if %x% == x (
  34.        rem Default_size:19660880
  35.        set /p Default_size=<%temp%\Default_size.tmp
  36.        %wmic_registry% SetDWORDValue ^&H80000001,"Console","ScreenBufferSize","!Default_size!" >nul
  37.        del %temp%\Default_size.tmp /q >nul 2>nul
  38.        exit
  39. )
  40. if %x% == 0 (
  41.        set name_a=State
  42.        set /p a=                                 [0.Stopped 1.Running]:
  43.        if !a! == 0 set name_b=Stopped
  44.        if !a! == 1 set name_b=Running
  45.        goto :start_
  46. )
  47. if %x% == 1 (
  48.        set name_a=startmode
  49.        set /p b=                                 [0.Auto 1.Manual 2.Disabled 3.Boot 4.System 5.unknown]:
  50.        if !b! == 0 set name_b=Auto
  51.        if !b! == 1 set name_b=Manual
  52.        if !b! == 2 set name_b=Disabled
  53.        if !b! == 3 set name_b=Boot
  54.        if !b! == 4 set name_b=System
  55.        if !b! == 5 set name_b=unknown
  56.        goto :start_
  57. )
  58. goto :loop
  59. :start_
  60. echo.
  61. echo.
  62. (
  63.        del %temp%\temp.tmp
  64.        wmic sysdriver where %name_a%='%name_b%' get name>>%temp%\temp.tmp
  65. ) >nul 2>nul
  66. for /f %%a in ("%temp%\temp.tmp") do (
  67.        if %%~za lss 10 (
  68.               echo No one.
  69.               goto :start__
  70.        )
  71. )
  72. for /f "usebackq delims=" %%a in (
  73.        `"wmic sysdriver where %name_a%='%name_b%' get name,State,startmode,pathname,ServiceType"`
  74.        ) do (
  75.        set /a temp_l+=1
  76.        if !temp_l! == 1 (
  77.               call echo.%%a    LastModified        Size      Manufacturer and Version
  78.               for /l %%i in (1,1,150) do set/p=━<nul
  79.        )
  80.        if !temp_l! gtr 1 (
  81.               for /f "tokens=1,2 delims=:." %%m in ("%%a") do (
  82.                      set temp_m=%%m
  83.                      set temp_n=%%n
  84.                      set temp_m=!temp_m:~-1!
  85.                      set driver_path_m=!temp_m!:!temp_n!.sys
  86.                      set driver_path_wmi=!driver_path_m:\=\\!
  87.                      for /f "delims=" %%o in ("!driver_path_m!") do (
  88.                              set time_=%%~to
  89.                      )
  90.                      if defined time_ (
  91.                              for /f "skip=1 usebackq delims=" %%p in (
  92.                                      `"wmic datafile where name="!driver_path_wmi!" get size,Manufacturer,Version"`
  93.                                      ) do (
  94.                                      set Manu_=%%p
  95.                              )
  96.                              ) else (
  97.                              set time_=               
  98.                              set Manu_=                 
  99.                      )
  100.                      call echo.%%a    !time_!    !Manu_!
  101.               )
  102.        )
  103. )
  104. :start__
  105. for /l %%i in (1,1,150) do set/p=━<nul
  106. echo Done,Press any key to continue.
  107. pause>nul
  108. goto :loop
复制代码

作者: lxzzr    时间: 2009-6-28 09:57

个人感觉somebody发过的VBS版不是怎么精确:
其中a图是这个批处理版的,
其中b图是somebody发过的VBS版,
以上情况仅在我本机及网吧的各机器上测试过。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2