Board logo

标题: [系统相关] [已解决]收集系统信息的批处理,但运行结果不完整,求帮助 [打印本页]

作者: cocn2002    时间: 2015-3-26 15:00     标题: [已解决]收集系统信息的批处理,但运行结果不完整,求帮助

本帖最后由 cocn2002 于 2015-3-26 19:46 编辑

在坛子里翻到一个前辈发的关于收集系统信息的批处理,用后发现部分缺少运行结果,恳求帮助完善下,使其可以完整显示,我使用的操作系统WIN7 64位
下面是批处理的内容+运行结果      

内容:
  1. @echo off
  2. color 0a
  3. title   硬件检测     
  4. mode con cols=40  lines=10
  5. sc config winmgmt start= auto >nul 2<&1
  6. net start winmgmt 2>nul
  7. setlocal ENABLEDELAYEDEXPANSION
  8. set file=!computername!.txt
  9. set txt=info.tmp
  10. if exist !file! del !file!
  11. cls
  12. echo.
  13. echo     正在收集硬件信息中,请稍候......
  14. echo     --------------------------------
  15. echo    ┏━━━━━━━━━━━━━━━┓
  16. echo    ┃  !!!请勿关闭本程序!!! ┃
  17. echo    ┃    如果程序打扰了您的工作  ┃
  18. echo    ┃        请把程序最小化      ┃
  19. echo    ┗━━━━━━━━━━━━━━━┛
  20. echo     --------------------------------
  21. ::从DXDIAG里获取主机型号、CPU、内存信息
  22. dxdiag /t !txt!
  23. for /f "tokens=2 delims=:" %%i in ('type !txt! ^| findstr /i /c:"System Model"') do set XH=%%i
  24. for /f "tokens=2 delims=:" %%i in ('type !txt! ^| findstr /i /c:"          Processor:"') do set CPU=%%i
  25. for /f "tokens=2 delims=:" %%i in ('type !txt! ^| findstr /c:"             Memory:"') do set NC=%%i
  26. ::内存容量取整
  27. set /a mmem=!NC:~0,-6!
  28. if !mmem! LEQ 800 set mem=!mmem!MB
  29. if !mmem! LEQ 1250 (
  30.    if !mmem! GEQ 850 (
  31.       set mem=1G
  32.      )
  33.    )
  34. if !mmem! LEQ 1750 (
  35.    if !mmem! GEQ 1250 (
  36.       set mem=1.5G
  37.      )
  38.    )
  39. if !mmem! LEQ 2250 (
  40.    if !mmem! GEQ 1750 (
  41.       set mem=2G
  42.      )
  43.    )
  44. if !mmem! GEQ 3250 set mem=4G
  45. ::用WMIC命令获取硬盘型号与硬盘容量
  46. for /f "skip=1 tokens=*" %%i in ('wmic DISKDRIVE get caption') do (
  47. if not "%%i"=="" (set/a n+=1&set HDD!n!=%%i)
  48. )
  49. for /f "skip=1 delims=" %%i in ('wmic DISKDRIVE get size') do call set 硬盘大小=!!硬盘大小!! %%i
  50. for /f "tokens=1,2,3,4" %%i in ("!硬盘大小!") do call set Size1=%%i&set Size2=%%j&set Size3=%%k&set Size4=%%l
  51. ::硬盘容量取整
  52. set /a Size1=!Size1:~0,-9!
  53. set /a Size2=!Size2:~0,-9!
  54. set /a Size3=!Size3:~0,-9!
  55. set /a Size4=!Size4:~0,-9!
  56. if !Size1:~-1! LEQ 9 (
  57.    if !Size1:~-1! GEQ 1 (
  58.       set /a size1=!size1!+1
  59.      )
  60.    )
  61. if !Size2:~-1! LEQ 9 (
  62.    if !Size2:~-1! GEQ 1 (
  63.       set /a size2=!size2!+1
  64.      )
  65.    )
  66. if !Size3:~-1! LEQ 9 (
  67.    if !Size3:~-1! GEQ 1 (
  68.       set /a size3=!size3!+1
  69.      )
  70.    )
  71. if !Size4:~-1! LEQ 9 (
  72.    if !Size4:~-1! GEQ 1 (
  73.       set /a size4=!size4!+1
  74.      )
  75.    )
  76. if !Size1! GEQ 40 set /a size1=!size1!-!Size1:~-1!
  77. if !Size2! GEQ 40 set /a size2=!size2!-!Size2:~-1!
  78. if !Size3! GEQ 40 set /a size3=!size3!-!Size3:~-1!
  79. if !Size4! GEQ 40 set /a size4=!size4!-!Size4:~-1!
  80. if !Size2! LEQ 39 set /a size2=!size2!-1
  81. if !Size3! LEQ 39 set /a size3=!size3!-1
  82. if !Size4! LEQ 39 set /a size4=!size4!-1
  83. if !size1! GEQ 0 (set size1=!size1!G) else set "size1= "
  84. if !size2! GEQ 0 (set size2=!size2!G) else set "size2= "
  85. if !size3! GEQ 0 (set size3=!size3!G) else set "size3= "
  86. if !size4! GEQ 0 (set size4=!size4!G) else set "size4= "
  87. ::获取IP等信息及WMIC取显卡、声卡型号
  88. for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^| findstr /i /c:"IP Address"') do set IP=%%i
  89. for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^| findstr /i /c:"Subnet Mask"') do set Subnet=%%i
  90. for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^| findstr /i /c:"Physical Address"') do set mac=%%i
  91. for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^| findstr /i /c:"Default Gateway"') do set gateway=%%i
  92. for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^| findstr /i /c:"DNS Servers"') do set dns=%%i
  93. for /f "tokens=2 delims=:" %%i in ('ipconfig /all ^| findstr /i /c:"Description"') do set netcard=%%i
  94. for /f "skip=1 delims=" %%i in ('wmic SOUNDDEV get ProductName') do set SOUND=%%i
  95. for /f "tokens=1,2 delims==" %%a in ('wmic path Win32_VideoController get AdapterRAM^,Name /value^|findstr "AdapterRAM Name"') do set Video=%%b
  96. ::输出到文件并清除临时文件
  97. echo.>>!file!
  98. echo 计算机名:        !computername!>>!file!
  99. echo 主机型号:       !XH!>>!file!
  100. echo CPU 相关:       !CPU!>>!file!
  101. echo 内存总量:        !mem!>>!file!
  102. if not "!HDD1!"=="" echo 硬盘1型号:       !HDD1:~0,-2!>>!file!
  103. if not "!HDD1!"=="" echo 硬盘1容量:       !size1!>>!file!
  104. if not "!HDD2!"=="" echo 硬盘2型号:       !HDD2:~0,-2!>>!file!
  105. if not "!HDD2!"=="" echo 硬盘2容量:       !size2!>>!file!
  106. if not "!HDD3!"=="" echo 硬盘3型号:       !HDD3:~0,-2!>>!file!
  107. if not "!HDD3!"=="" echo 硬盘3容量:       !size3!>>!file!
  108. if not "!HDD4!"=="" echo 硬盘4型号:       !HDD4:~0,-2!>>!file!
  109. if not "!HDD4!"=="" echo 硬盘4容量:       !size4!>>!file!
  110. echo 声卡型号:        !SOUND!>>!file!
  111. echo 显卡型号:        !Video!>>!file!
  112. echo 网卡型号:       !netcard!>>!file!
  113. echo MAC 地址:       !mac!>>!file!
  114. echo I P 地址:       !IP!>>!file!
  115. echo 子网掩码:       !Subnet!>>!file!
  116. echo 网    关:       !gateway!>>!file!
  117. echo D  N  S :       !dns!>>!file!
  118. echo.>>!file!
  119. echo.>>!file!
  120. echo 下面是DXDIAG生成的信息。>>!file!
  121. echo.>>!file!
  122. type !txt!>>!file!
  123. del /f !txt!
  124. exit
复制代码
运行结果:

计算机名:        PC201409021524
主机型号:      
CPU 相关:      
内存总量:        -1MB
硬盘1型号:       HDS722580VLAT20 ATA Device
硬盘1容量:       80G
硬盘2型号:       ST3160815AS ATA Device     
硬盘2容量:       160G
硬盘3型号:      
硬盘3容量:        
声卡型号:        

显卡型号:        Intel(R) G41 Express Chipset

网卡型号:      
MAC 地址:      
I P 地址:      
子网掩码:      
网    关:      
D  N  S :      


下面是DXDIAG生成的信息。
作者: pcl_test    时间: 2015-3-26 18:17

本帖最后由 pcl_test 于 2015-3-26 18:27 编辑

回复 1# cocn2002
上传一份生成的 系统信息 txt文件看看,看情况你电脑是禁用了DirectX诊断工具,在开始菜单的运行里或是命令提示符里输入dxdiag ,回车后看看能否打开DirectX诊断工具
作者: cocn2002    时间: 2015-3-26 18:26

您好! 运行结果内就是所生成的TXT文件内容

计算机名:        PC201409021524
主机型号:      
CPU 相关:      
内存总量:        -1MB
硬盘1型号:       HDS722580VLAT20 ATA Device
硬盘1容量:       80G
硬盘2型号:       ST3160815AS ATA Device     
硬盘2容量:       160G
硬盘3型号:      
硬盘3容量:        
声卡型号:        

显卡型号:        Intel(R) G41 Express Chipset

网卡型号:      
MAC 地址:      
I P 地址:      
子网掩码:      
网    关:      
D  N  S :      


下面是DXDIAG生成的信息。
作者: cocn2002    时间: 2015-3-26 18:28

可以的显示directx 诊断工具的
作者: cocn2002    时间: 2015-3-26 18:32

系统在运行批处理过程时,DOS窗口会在下面内容后显示3行:系统找不到指定的文件   的信息
   ┏━━━━━━━━━━━━━━━┓
   ┃  !!!请勿关闭本程序!!! ┃
   ┃    如果程序打扰了您的工作  ┃
   ┃        请把程序最小化      ┃
   ┗━━━━━━━━━━━━━━━┛
作者: pcl_test    时间: 2015-3-26 18:33

回复 4# cocn2002
运行该命令,把生成的txt文件上传看看,生成需要一些时间
  1. dxdiag /t D:\DirectX诊断.txt
复制代码

作者: cocn2002    时间: 2015-3-26 18:39

有641行,全部都贴上来吗?
作者: pcl_test    时间: 2015-3-26 18:41

回复 7# cocn2002
用附件上传txt文件
作者: cocn2002    时间: 2015-3-26 18:48

上传了 请看看
作者: pcl_test    时间: 2015-3-26 19:02

本帖最后由 pcl_test 于 2015-3-26 19:04 编辑

回复 9# cocn2002
先看看这样能不能获取
  1. @echo off
  2. color 0a
  3. title 硬件检测     
  4. mode con cols=40  lines=10
  5. sc config winmgmt start= auto >nul 2<&1
  6. net start winmgmt 2>nul
  7. setlocal ENABLEDELAYEDEXPANSION
  8. set "file=!COMPUTERNAME!.txt"
  9. set "txt=$info.tmp"
  10. if exist !file! del !file!
  11. cls
  12. echo.
  13. echo     正在收集硬件信息中,请稍候……
  14. echo    --------------------------------
  15. echo    ┏━━━━━━━━━━━━━━┓
  16. echo    ┃  !!!请勿关闭本程序!!!┃
  17. echo    ┃   如果程序打扰了您的工作   ┃
  18. echo    ┃       请把程序最小化       ┃
  19. echo    ┗━━━━━━━━━━━━━━┛
  20. echo    --------------------------------
  21. ::从DXDIAG里获取主机型号、CPU、内存信息
  22. dxdiag /t !txt!
  23. for /f "tokens=2 delims=:" %%i in ('type "!txt!" ^| findstr /i /c:"       System Model:"') do set XH=%%i
  24. for /f "tokens=2 delims=:" %%i in ('type "!txt!" ^| findstr /i /c:"          Processor:"') do set CPU=%%i
  25. for /f "tokens=2 delims=:" %%i in ('type "!txt!" ^| findstr /c:"             Memory:"') do set NC=%%i
  26. for /f "tokens=2 delims=:" %%i in ('type "!txt!" ^| findstr /c:"Available OS Memory:"') do set ANC=%%i
  27. for /f "tokens=2 delims=:" %%i in ('type "!txt!" ^| findstr /c:"   Operating System:"') do set OS=%%i
  28. for /f "tokens=2 delims=:" %%i in ('type "!txt!" ^| findstr /c:"    DirectX Version:"') do set DX=%%i
  29. ::内存容量取整
  30. set /a mmem=!NC:~0,-6!
  31. if !mmem! LEQ 1024 (
  32. set mem=!mmem!MB
  33. ) else (
  34. set /a mem=!mmem!*10/1024
  35. set mem=!mem:~,-1!.!mem:~-1!GB
  36. )
  37. set /a ammem=!ANC:~0,-6!
  38. if !ammem! LEQ 1024 (
  39. set amem=!ammem!MB
  40. ) else (
  41. set /a amem=!ammem!*10/1024
  42. set amem=!amem:~,-1!.!amem:~-1!GB
  43. )
  44. ::用WMIC命令获取硬盘型号与硬盘容量
  45. for /f "skip=1 tokens=*" %%i in ('wmic DISKDRIVE get caption') do (
  46. if not "%%i"=="" (set/a n+=1&set HDD!n!=%%i)
  47. )
  48. for /f "skip=1 delims=" %%i in ('wmic DISKDRIVE get size') do call set 硬盘大小=!!硬盘大小!! %%i
  49. for /f "tokens=1,2,3,4" %%i in ("!硬盘大小!") do call set Size1=%%i&set Size2=%%j&set Size3=%%k&set Size4=%%l
  50. ::硬盘容量取整
  51. set /a Size1=!Size1:~0,-9!
  52. set /a Size2=!Size2:~0,-9!
  53. set /a Size3=!Size3:~0,-9!
  54. set /a Size4=!Size4:~0,-9!
  55. if !Size1:~-1! LEQ 9 (
  56.    if !Size1:~-1! GEQ 1 (
  57.       set /a size1=!size1!+1
  58.      )
  59.    )
  60. if !Size2:~-1! LEQ 9 (
  61.    if !Size2:~-1! GEQ 1 (
  62.       set /a size2=!size2!+1
  63.      )
  64.    )
  65. if !Size3:~-1! LEQ 9 (
  66.    if !Size3:~-1! GEQ 1 (
  67.       set /a size3=!size3!+1
  68.      )
  69.    )
  70. if !Size4:~-1! LEQ 9 (
  71.    if !Size4:~-1! GEQ 1 (
  72.       set /a size4=!size4!+1
  73.      )
  74.    )
  75. if !Size1! GEQ 40 set /a size1=!size1!-!Size1:~-1!
  76. if !Size2! GEQ 40 set /a size2=!size2!-!Size2:~-1!
  77. if !Size3! GEQ 40 set /a size3=!size3!-!Size3:~-1!
  78. if !Size4! GEQ 40 set /a size4=!size4!-!Size4:~-1!
  79. if !Size2! LEQ 39 set /a size2=!size2!-1
  80. if !Size3! LEQ 39 set /a size3=!size3!-1
  81. if !Size4! LEQ 39 set /a size4=!size4!-1
  82. if !size1! GEQ 0 (set size1=!size1!G) else set "size1= "
  83. if !size2! GEQ 0 (set size2=!size2!G) else set "size2= "
  84. if !size3! GEQ 0 (set size3=!size3!G) else set "size3= "
  85. if !size4! GEQ 0 (set size4=!size4!G) else set "size4= "
  86. ::获取IP等信息及WMIC取显卡、声卡型号
  87. for /f "skip=1 delims=" %%i in ('wmic SOUNDDEV get ProductName ^|findstr .') do set SOUND=%%i
  88. for /f "tokens=1,2 delims==" %%a in ('wmic path Win32_VideoController get AdapterRAM^,Name /value^|findstr "AdapterRAM Name"') do set Video=%%b
  89. ::输出到文件并清除临时文件
  90. (echo.
  91. echo 当前用户:        !USERNAME!
  92. echo 计算机名:        !COMPUTERNAME!
  93. echo 系统相关:        !OS!
  94. echo 主机型号:       !XH!
  95. echo CPU 相关:       !CPU!
  96. echo 内存总量:        !mem!
  97. echo 可用内存:        !amem!
  98. echo DirectX版本:        !DX!
  99. if not "!HDD1!"=="" echo 硬盘1型号:       !HDD1:~0,-2!
  100. if not "!HDD1!"=="" echo 硬盘1容量:       !size1!
  101. if not "!HDD2!"=="" echo 硬盘2型号:       !HDD2:~0,-2!
  102. if not "!HDD2!"=="" echo 硬盘2容量:       !size2!
  103. if not "!HDD3!"=="" echo 硬盘3型号:       !HDD3:~0,-2!
  104. if not "!HDD3!"=="" echo 硬盘3容量:       !size3!
  105. if not "!HDD4!"=="" echo 硬盘4型号:       !HDD4:~0,-2!
  106. if not "!HDD4!"=="" echo 硬盘4容量:       !size4!
  107. echo 声卡型号:        !SOUND!
  108. echo 显卡型号:        !Video!
  109. echo.)>"!file!"
  110. exit
复制代码

作者: cocn2002    时间: 2015-3-26 19:06

您好! 运行结果:

当前用户:        Administrator
计算机名:        PC201409021524
系统相关:        Windows_NT
主机型号:      
CPU 相关:      
内存总量:        -1MB
可用内存:        -1MB
DirectX版本:        
硬盘1型号:       HDS722580VLAT20 ATA Device
硬盘1容量:       80G
硬盘2型号:       ST3160815AS ATA Device     
硬盘2容量:       160G
硬盘3型号:      
硬盘3容量:        
声卡型号:        Parallels Access Sound Controller  

显卡型号:        Intel(R) G41 Express Chipset
作者: pcl_test    时间: 2015-3-26 19:20

本帖最后由 pcl_test 于 2015-3-26 19:25 编辑
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. echo waiting……
  4. set "file=!COMPUTERNAME!.txt"
  5. if exist !file! del !file!
  6. ::从DXDIAG里获取主机型号、CPU、内存信息
  7. dxdiag /t $.txt
  8. for /f "tokens=2 delims=:" %%i in ('type $.txt ^| findstr /i /c:"       System Model:"') do set XH=%%i
  9. for /f "tokens=2 delims=:" %%i in ('type $.txt ^| findstr /i /c:"          Processor:"') do set CPU=%%i
  10. for /f "tokens=2 delims=:" %%i in ('type $.txt ^| findstr /c:"             Memory:"') do set NC=%%i
  11. for /f "tokens=2 delims=:" %%i in ('type $.txt ^| findstr /c:"Available OS Memory:"') do set ANC=%%i
  12. for /f "tokens=2 delims=:" %%i in ('type $.txt ^| findstr /c:"   Operating System:"') do set OS=%%i
  13. for /f "tokens=2 delims=:" %%i in ('type $.txt ^| findstr /c:"    DirectX Version:"') do set DX=%%i
  14. ::内存容量取整
  15. set /a mmem=!NC:~0,-6!
  16. if !mmem! LEQ 1024 (
  17. set mem=!mmem!MB
  18. ) else (
  19. set /a mem=!mmem!*10/1024
  20. set mem=!mem:~,-1!.!mem:~-1!GB
  21. )
  22. set /a ammem=!ANC:~0,-6!
  23. if !ammem! LEQ 1024 (
  24. set amem=!ammem!MB
  25. ) else (
  26. set /a amem=!ammem!*10/1024
  27. set amem=!amem:~,-1!.!amem:~-1!GB
  28. )
  29. echo 当前用户:        !USERNAME!
  30. echo 计算机名:        !COMPUTERNAME!
  31. echo 系统相关:        !OS!
  32. echo 主机型号:       !XH!
  33. echo CPU 相关:       !CPU!
  34. echo 内存总量:        !mem!
  35. echo 可用内存:        !amem!
  36. echo DirectX版本:        !DX!
  37. pause
复制代码
回复 11# cocn2002
作者: cocn2002    时间: 2015-3-26 19:43

pcl_test  非常非常感谢你的支持!!!
我在其他PC上测试源批处理为正常,只是中间要过杀毒软件
而本机直到最后还出错的原因我想是我自己的操作系统有问题




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