无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 3343|回复: 4
打印 上一主题 下一主题

[分享] SETUPPCIDVI.CMD:用于驱动安装的批处理

  [复制链接]
跳转到指定楼层
1#
发表于 2017-2-13 20:25:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 chiannet 于 2017-2-14 10:00 编辑

不晓得咋回事,PECMD的DEVI 命令:

  1. DEVI *sub  D:\ABC,display或DEVI   D:\ABC\AMD.inf
复制代码

等等方式在我的8.1RAMOS下硬是装不了显卡驱动,后来发现
  1. DRVLOAD.EXE D:\ABC\AMDvga.inf
复制代码

可以安装。关键是要找出正确的inf文件。

就写了下列代码,粗糙得很,现在丢出来,就是供大家斧正精炼完善。

SETUPPCIDVI.7z (1.43 KB, 下载次数: 64)

REM ===================================================begin=========================

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
CD /D "%~DP0"

SET SPT=%~F2
REM 比对驱动所在目录名称包含的Class信息与调用命令行提供的对应信息,如果不匹配,直接忽略,加速流程
ECHO %SPT%|FINDSTR /I "%1" >NUL && (GOTO :B)
GOTO :END
:B
SET ST=%SPT:~-1,1%
IF "%ST%"=="\" SET SPT=%SPT:~0,-1%
SET /A IDN=0
DEL %WINDIR%\TEMP\*.TXT >NUL 2>NUL
DEVCON FIND =%1 PCI* >%WINDIR%\TEMP\0.TXT
FOR /F "DELIMS=" %%I IN (%WINDIR%\TEMP\0.TXT) DO (FOR /F "DELIMS=:" %%J IN ('CALL ECHO %%I^|FINDSTR "PCI\VEN"') DO (ECHO %%I >>%WINDIR%\TEMP\1.TXT))
REM PCI\VEN_1002&DEV_6810&SUBSYS_0B041002&REV_00\4&6E074CE&0&0010: AMD RADEON R9 200 SERIES
FOR /F "TOKENS=3 DELIMS=:" %%I IN ('FIND /V "" /C %WINDIR%\TEMP\1.TXT') DO (SET IDT=%%I)
CLS
REM 如果IDT小于1说明没找到请求的Class类的任何HWID,必须直接退出
IF %IDT% LSS 1 (GOTO :END)

FOR /F "TOKENS=1-6 DELIMS=_,\" %%I IN (%WINDIR%\TEMP\1.TXT) DO (
        SET /A IDN=!IDN!+1
        REM 比对驱动所在目录名称包含的Provider信息与DEVCON检测到的对应信息,如果不匹配,直接忽略,加速流程
        IF /I "%%K"=="1002&DEV" SET Provider=AMD
        IF /I "%%K"=="8086&DEV" SET Provider=INTEL
        IF /I "%%K"=="10DE&DEV" SET Provider=NVIDIA
        ECHO %SPT%|FINDSTR /I "!Provider!" >NUL && (
                SET LID=%%I\%%J_%%K_%%L_%%M_%%N
                REM PCI\VEN_1002&DEV_6810&SUBSYS_0B041002&REV_00
                SET MID=!LID:~0,37!
                REM PCI\VEN_1002&DEV_6810&SUBSYS_0B041002
                SET LL=%%L
                SET LL=!LL:~0,4!
                SET MM=%%M
                SET MM=!MM:~-4,4!
                SET SID2=%%I\%%J_%%K_!LL!!MM!_%%N
                REM PCI\VEN_1002&DEV_6810&REV_00
                SET SID=!LID:~0,21!
                REM PCI\VEN_1002&DEV_6810
                FOR /F "DELIMS=" %%A IN ('DIR /A-D /B /S /O-N "%SPT%\*.INF"') DO (
                        FOR /F "TOKENS=3 DELIMS=:" %%Q IN ('FIND /I /C "!LID!" "%%A"')  DO (IF %%Q GTR 0 ECHO %%A >> %WINDIR%\TEMP\1!IDN!.TXT)
                        FOR /F "TOKENS=3 DELIMS=:" %%Q IN ('FIND /I /C "!MID!" "%%A"')  DO (IF %%Q GTR 0 ECHO %%A >> %WINDIR%\TEMP\2!IDN!.TXT)
                        FOR /F "TOKENS=3 DELIMS=:" %%Q IN ('FIND /I /C "!SID2!" "%%A"') DO (IF %%Q GTR 0 ECHO %%A >> %WINDIR%\TEMP\3!IDN!.TXT)
                        FOR /F "TOKENS=3 DELIMS=:" %%Q IN ('FIND /I /C "!SID!" "%%A"')  DO (IF %%Q GTR 0 ECHO %%A >> %WINDIR%\TEMP\4!IDN!.TXT)
                        )
                )
)

SET /A IDNX=0
:A
SET /A IDNX=%IDNX%+1
FOR %%X IN (1%IDNX% 2%IDNX% 3%IDNX% 4%IDNX%) DO  (
REM 1x 2x 3x 4x 优先级依次递减
IF EXIST %WINDIR%\TEMP\%%X.TXT (
        FOR /F "TOKENS=1* DELIMS=" %%A IN (%WINDIR%\TEMP\%%X.TXT) DO (DRVLOAD.EXE "%%A")
        IF %IDN% GTR %IDNX% (GOTO :A) ELSE (GOTO :END)
))
IF %IDN% GTR %IDNX% (GOTO :A)


:END
EXIT

;Chiannet
;For USBOS 20170213
;目前仅限于安装HWID是PCI\VEN开头的那些设备,要修改才能用于HWID是ACPI或HDaudiao等开头的设备;
;由于findsdr.exe不能处理unicode编码的文本,所以主要依赖了这个find.exe;
;用到了FINDSTR.EXE find.EXE DEVCON.EXE DRVLOAD.EXE四个文件;
;必须带参数运行:SETUPPCIDVI.CMD 设备类 驱动所在目录。

;示例:SETUPPCIDVI.CMD NET "C:\M Y\Drivers\net"
;      SETUPPCIDVI.CMD display "C:\M Y\Drivers\vga"
REM ===================================================end=========================


评分

参与人数 2无忧币 +10 收起 理由
zmac2007 + 5
freesoft00 + 5

查看全部评分

2#
发表于 2017-2-13 21:38:36 | 只看该作者
没人顶啊,我先顶下,虽说看不懂...
回复

使用道具 举报

3#
发表于 2017-2-13 23:02:55 | 只看该作者
findstr处理unicode文本可以通过type 123.txt | findstr .*实现
回复

使用道具 举报

4#
发表于 2017-2-13 23:21:13 | 只看该作者
没看懂,只能帮顶一下啦。
回复

使用道具 举报

5#
发表于 2017-2-14 16:49:29 来自手机 | 只看该作者
对于技术精益求精且乐于分享经验的人都是值得尊敬的人啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-25 19:46

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表