[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 【已解决】求助批处理提取显示器的硬件信息

本帖最后由 locoman 于 2023-8-19 14:15 编辑

论坛中有一帖子《纯批处理获取硬件信息》,作者源码文件做得很好!!
http://www.bathome.net/viewthread.php?tid=38259

里面有很全很完整的硬件信息提取功能,一是,该bat文件内部有防修改加密措施,二是,我只需要提取显示器的硬件信息。

因此,我想对该bat文件有关显示器信息部分进行拆分剥离出来单独使用。
可是,我始终没有成功,在此,想请大佬帮我搞一下,以实现bat提取显示器硬件信息。
先谢谢了!!拜托!!

=================
只需要这个结果:
=================

关于显示器的详细信息如下:
    型号 ........... : HWP3121
    屏幕尺寸 ....... : 19 英寸
    生产日期 ....... : 2015 年 第 49 周
    屏幕大小 ....... : 43 厘米 × 24 厘米
    像素密度 ....... : 96 Dpi
    当前模式 ....... : 1600 x 900 (32 bit) (60 Hz)

==================

原帖子中源文件中源码(由于超过论坛限制,只贴出部分源码,完整的还敬请移步原帖子)

-------------------------------------
  1. echo.关于显示器的详细信息如下:>>!File!
  2. echo.>>!File!
  3. for /f "tokens=3" %%i in ('Reg Query "HKLM\System\CurrentControlSet\Enum\Display\!5!\!6!\Device Parameters" /v "Edid" 2^>nul') do (
  4. set Edid=%%i
  5. )
  6. if "%Edid%" == "" (for /f "tokens=3" %%i in ('Reg Query "HKLM\System\CurrentControlSet\Enum\Display\!5!" /s 2^>nul ^|findstr /i "Edid"') do (set Edid=%%i))
  7. if "%DisplayName%" == "" set DisplayName=!NoGet!
  8. echo.    型号 ........... : %DisplayName%>>!File!
  9. echo.>>!File!
  10. if not "%Edid%" == "" (
  11. set Yeardata=!Edid:~34,2!
  12. set Weekdata=!Edid:~32,2!
  13. set Longdata=!Edid:~42,2!
  14. set Widedata=!Edid:~44,2!
  15. set /a Weekdata=0X!Weekdata!*1
  16. set /a Longdata=0X!Longdata!*1
  17. set /a Widedata=0X!Widedata!*1
  18. set /a Yeardata=0X!Yeardata!*1+1990
  19. call :Division !Longdata! 2.54 Longdata.in
  20. call :Division !Widedata! 2.54 Widedata.in
  21. call :Times !Longdata.in! !Longdata.in! Longdata.in
  22. call :Times !Widedata.in! !Widedata.in! Widedata.in
  23. call :Addition !Longdata.in! !Widedata.in! Diagonal
  24. set "Code=CreateObject("Scripting.FileSystemObject").GetStandardStream(1).Write(sqr(!Diagonal!))(close)"
  25. for /f "delims=" %%i in ('Mshta "Vbscript:!Code!"') do set Screen.In=%%i
  26. for /f "tokens=1,2 delims=." %%i in ("!Screen.In!") do (
  27. set Screen.In=%%i
  28. set Screen.Io=%%j
  29. )
  30. set Screen.Io=!Screen.Io:~0,1!
  31. if !Screen.Io! geq 7 set /a Screen.In=!Screen.In!+1
  32. echo.    屏幕尺寸 ....... : !Screen.In! 英寸>>!File!
  33. echo.>>!File!
  34. echo.    生产日期 ....... : !Yeardata! 年 第 !Weekdata! 周>>!File!
  35. echo.>>!File!
  36. echo.    屏幕大小 ....... : !Longdata! 厘米 × !Widedata! 厘米>>!File!
  37. echo.>>!File!
  38. )
  39. if not defined PixelsPerXLogicalInch (set PixelsPerXLogicalInch=!NoGet!) else set PixelsPerXLogicalInch=!PixelsPerXLogicalInch! Dpi
  40. echo.    像素密度 ....... : %PixelsPerXLogicalInch%>>!File!
  41. echo.>>!File!
  42. echo.    当前模式 ....... : %Resolution%>>!File!
  43. if not "%CD-ROM.Name%" == "无" (
  44. echo.>>!File!
  45. echo.>>!File!
  46. echo.关于光驱的详细信息如下:>>!File!
  47. echo.>>!File!
  48. echo.  列出所有光驱: >>!File!
  49. echo.>>!File!
  50. echo.    盘符   类型       型号 >>!File!
  51. echo.>>!File!
  52. for /f  "skip=1 delims=" %%i in ('Wmic CdRom Get Name^,Drive^,Mediatype 2^>nul') do (
  53. set CdRom.0=%%i
  54. call :Exit
  55. if "!CdRom.0!" neq "" echo.    !CdRom.0!>>!File!
  56. )
  57. )
  58. echo.>>!File!
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 locoman 于 2023-8-19 14:37 编辑

感谢3楼的@buyiyang,4楼的@Batcher,代码都能正常运行,实现了需求。

特别感谢8楼的@yakeyun 朋友!还专门制作了文件提供下载,太谢谢了!!

但是,8楼的@yakeyun 朋友的文件执行不能成功——始终停留在“echo 当前系统获取到如下分辨率支持列表信息:”,就再没有任何响应了。

按说8楼的@yakeyun 朋友的思路是最好的了——将三方软件DumpEDID.exe放在bat中释放出来,用后即焚。


——我检查磁盘中也是释放出来DumpEDID.exe了的,单独执行之也正常,不知为啥bat就执行不下去了呢??



——感谢大佬们的一直热情热心帮助指导,按照@Batcher一贯愿景:帮助不收钱,实在要表示,可以在bathome微信群中给大家发红包。
我已经在bathome微信群中给大家发红包了,以资答谢!!

TOP

返回列表