适配Batch脚本:通过pnputil按驱动版本定位并删除OEM驱动包
批处理脚本修改方案:匹配指定驱动版本删除对应OEM驱动包
原脚本通过pnputil -e获取系统驱动列表,匹配“HID Global”后取上一行的OEM驱动文件名执行删除操作。现修改为匹配驱动版本12/13/2016 1.0.0.2,取该匹配行的上数第三行中的OEM文件名,再执行删除命令。
修改后的脚本代码
@echo off setlocal enabledelayedexpansion set "target_version=12/13/2016 1.0.0.2" set "line1=" set "line2=" set "line3=" for /f "delims=" %%a in ('pnputil -e') do ( set "line1=!line2!" set "line2=!line3!" set "line3=%%a" echo !line3! | findstr /c:"%target_version%" >nul if not errorlevel 1 ( for /f "tokens=2 delims=:" %%b in ("!line1!") do ( set "oem_file=%%b" for /f "tokens=* delims= " %%c in ("!oem_file!") do set "oem_file=%%c" echo 待删除驱动包:!oem_file! pnputil -f -d "!oem_file!" ) ) ) endlocal
核心逻辑说明
- 行缓存机制:用
line1、line2、line3三个变量循环存储最近三行输出,每次迭代更新缓存,确保匹配到目标版本时,line1恰好是当前行的上数第三行(即OEM文件名所在行)。 - 精确匹配:使用
findstr /c:"%target_version%"精准定位包含目标版本的行,避免部分匹配导致误删。 - 提取OEM文件名:从
line1中通过for /f分割字符串,提取冒号后的OEM文件名,并去除前后空格,确保命令执行准确。 - 延迟扩展:开启
enabledelayedexpansion保证循环内变量的实时更新与读取,避免变量值滞后。
内容的提问来源于stack exchange,提问作者imyashy
相关产品推荐
相关产品推荐

