已知可以通过下面代码获取到一台新主机当前没有安装驱动的硬件ID信息:- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- ::==========================自动获取主板型号提取未打驱动ID到目录==========================
- ::筛选主板
- for /f "delims== tokens=1,*" %%a in ('wmic baseboard get Product^/value ^|find "="') do for /f "delims=," %%c in ("%%b") do set "zbname=%%c"
- for /f "delims== tokens=1,*" %%d in ('wmic bios get SMBIOSBIOSVersion^/value ^|find "="') do for /f "delims=," %%f in ("%%e") do set "bios=%%f"
- echo,!zbname! 主板BIOS版本:!bios!
- echo,!zbname! 主板BIOS版本:!bios!>Name.txt
- set "zbname=%zbname: =%"
- set "zbname=%zbname:/=-%"
- set "zbname=%zbname:(=-%"
- set "zbname=%zbname:)=%"
- if exist !zbname!.txt (del !zbname!.txt)
- echo !zbname! >>Name.txt
- ren Name.txt !zbname!.txt
- echo.>>!zbname!.txt
- echo.>>!zbname!.txt
- pnputil /enum-devices /problem 28 /ids >>.\!zbname!.txt
- ::==========================自动获取主板型号提取未打驱动ID到目录==========================
- exit
复制代码 提取到的文本如下MS-TerminatorB760MD4.txt:
MS-Terminator B760M D4 主板BIOS版本:H3.43G
MS-TerminatorB760MD4
Microsoft PnP 工具
实例 ID: PCI\VEN_8086&DEV_7A4D&SUBSYS_00000000&REV_11\3&11583659&0&A9
设备描述: PCI 设备
类名: 未知
类 GUID: 未知
制造商名称: 未知
状态: 问题
问题代码: 28 (0x1C) [CM_PROB_FAILED_INSTALL]
问题状态: 0xC0000490
硬件 ID: PCI\VEN_8086&DEV_7A4D&SUBSYS_00000000&REV_11
PCI\VEN_8086&DEV_7A4D&SUBSYS_00000000
PCI\VEN_8086&DEV_7A4D&REV_11
PCI\VEN_8086&DEV_7A4D
PCI\VEN_8086&DEV_7A4D&CC_0C8000
PCI\VEN_8086&DEV_7A4D&CC_0C80
兼容 ID: PCI\VEN_8086&CC_0C8000
PCI\VEN_8086&CC_0C80
PCI\VEN_8086
PCI\CC_0C8000
PCI\CC_0C80
实例 ID: PCI\VEN_8086&DEV_7A24&SUBSYS_00000000&REV_11\3&11583659&0&FD
设备描述: PCI 设备
类名: 未知
类 GUID: 未知
制造商名称: 未知
状态: 问题
问题代码: 28 (0x1C) [CM_PROB_FAILED_INSTALL]
问题状态: 0xC0000490
硬件 ID: PCI\VEN_8086&DEV_7A24&SUBSYS_00000000&REV_11
PCI\VEN_8086&DEV_7A24&SUBSYS_00000000
PCI\VEN_8086&DEV_7A24&REV_11
PCI\VEN_8086&DEV_7A24
PCI\VEN_8086&DEV_7A24&CC_0C8000
PCI\VEN_8086&DEV_7A24&CC_0C80
兼容 ID: PCI\VEN_8086&CC_0C8000
PCI\VEN_8086&CC_0C80
PCI\VEN_8086
PCI\CC_0C8000
PCI\CC_0C80
实例 ID: PCI\VEN_8086&DEV_A77D&SUBSYS_00000000&REV_01\3&11583659&0&50
设备描述: PCI 数据捕获和信号处理控制器
类名: 未知
类 GUID: 未知
制造商名称: 未知
状态: 问题
问题代码: 28 (0x1C) [CM_PROB_FAILED_INSTALL]
问题状态: 0xC0000490
硬件 ID: PCI\VEN_8086&DEV_A77D&SUBSYS_00000000&REV_01
PCI\VEN_8086&DEV_A77D&SUBSYS_00000000
PCI\VEN_8086&DEV_A77D&REV_01
PCI\VEN_8086&DEV_A77D
PCI\VEN_8086&DEV_A77D&CC_118000
PCI\VEN_8086&DEV_A77D&CC_1180
兼容 ID: PCI\VEN_8086&CC_118000
PCI\VEN_8086&CC_1180
PCI\VEN_8086
PCI\CC_118000&DT_9
PCI\CC_118000
PCI\CC_1180&DT_9
PCI\CC_1180
实例 ID: PCI\VEN_8086&DEV_7A68&SUBSYS_00000000&REV_11\3&11583659&0&B0
设备描述: PCI 简单通讯控制器
类名: 未知
类 GUID: 未知
制造商名称: 未知
状态: 问题
问题代码: 28 (0x1C) [CM_PROB_FAILED_INSTALL]
问题状态: 0xC0000490
硬件 ID: PCI\VEN_8086&DEV_7A68&SUBSYS_00000000&REV_11
PCI\VEN_8086&DEV_7A68&SUBSYS_00000000
PCI\VEN_8086&DEV_7A68&REV_11
PCI\VEN_8086&DEV_7A68
PCI\VEN_8086&DEV_7A68&CC_078000
PCI\VEN_8086&DEV_7A68&CC_0780
兼容 ID: PCI\VEN_8086&CC_078000
PCI\VEN_8086&CC_0780
PCI\VEN_8086
PCI\CC_078000
PCI\CC_0780
实例 ID: PCI\VEN_8086&DEV_7A4C&SUBSYS_00000000&REV_11\3&11583659&0&A8
设备描述: PCI 设备
类名: 未知
类 GUID: 未知
制造商名称: 未知
状态: 问题
问题代码: 28 (0x1C) [CM_PROB_FAILED_INSTALL]
问题状态: 0xC0000490
硬件 ID: PCI\VEN_8086&DEV_7A4C&SUBSYS_00000000&REV_11
PCI\VEN_8086&DEV_7A4C&SUBSYS_00000000
PCI\VEN_8086&DEV_7A4C&REV_11
PCI\VEN_8086&DEV_7A4C
PCI\VEN_8086&DEV_7A4C&CC_0C8000
PCI\VEN_8086&DEV_7A4C&CC_0C80
兼容 ID: PCI\VEN_8086&CC_0C8000
PCI\VEN_8086&CC_0C80
PCI\VEN_8086
PCI\CC_0C8000
PCI\CC_0C80
实例 ID: ACPI\INTC1085\2&daba3ff&0
设备描述: 未知
类名: 未知
类 GUID: 未知
制造商名称: 未知
状态: 问题
问题代码: 28 (0x1C) [CM_PROB_FAILED_INSTALL]
问题状态: 0xC0000490
硬件 ID: ACPI\VEN_INTC&DEV_1085
ACPI\INTC1085
*INTC1085
实例 ID: PCI\VEN_8086&DEV_7A23&SUBSYS_00000000&REV_11\3&11583659&0&FC
设备描述: SM 总线控制器
类名: 未知
类 GUID: 未知
制造商名称: 未知
状态: 问题
问题代码: 28 (0x1C) [CM_PROB_FAILED_INSTALL]
问题状态: 0xC0000490
硬件 ID: PCI\VEN_8086&DEV_7A23&SUBSYS_00000000&REV_11
PCI\VEN_8086&DEV_7A23&SUBSYS_00000000
PCI\VEN_8086&DEV_7A23&REV_11
PCI\VEN_8086&DEV_7A23
PCI\VEN_8086&DEV_7A23&CC_0C0500
PCI\VEN_8086&DEV_7A23&CC_0C05
兼容 ID: PCI\VEN_8086&CC_0C0500
PCI\VEN_8086&CC_0C05
PCI\VEN_8086
PCI\CC_0C0500
PCI\CC_0C05
实例 ID: PCI\VEN_8086&DEV_7A70&SUBSYS_02448086&REV_11\3&11583659&0&A3
设备描述: 网络控制器
类名: 未知
类 GUID: 未知
制造商名称: 未知
状态: 问题
问题代码: 28 (0x1C) [CM_PROB_FAILED_INSTALL]
问题状态: 0xC0000490
硬件 ID: PCI\VEN_8086&DEV_7A70&SUBSYS_02448086&REV_11
PCI\VEN_8086&DEV_7A70&SUBSYS_02448086
PCI\VEN_8086&DEV_7A70&CC_028000
PCI\VEN_8086&DEV_7A70&CC_0280
兼容 ID: PCI\VEN_8086&DEV_7A70&REV_11
PCI\VEN_8086&DEV_7A70
PCI\VEN_8086&CC_028000
PCI\VEN_8086&CC_0280
PCI\VEN_8086
PCI\CC_028000&DT_9
PCI\CC_028000
PCI\CC_0280&DT_9
PCI\CC_0280
而系统硬件ID和驱动匹配规则是优先匹配硬件ID,匹配优先级从上到下,如果每条ID都匹配不到,然后再匹配兼容ID,匹配优先级从上到下。
从上面信息可以看到,每个硬件ID基本都在10条左右。而驱动目录会放在一个文件夹内,根据名称或者大小版本不同,放在不同子文件夹。
在匹配之前会先用DIR检索指定目录下的inf驱动文件,然后再用ID去每个inf文件内查找是否有硬件ID关键词。如果找到了关键词,就代表硬件和驱动匹配上了,
然后再用下面命令去安装对于的inf驱动文件:%%a是检索到的inf后缀文件- start /min "" "%SystemRoot%\system32\pnputil.exe" /subdirs /add-driver %%a /install
复制代码 因为有时候硬件ID中不存在匹配信息,只能通过通用ID匹配到,所以如何可以加快每条ID的匹配速度。 |