|
本帖最后由 chiannet 于 2017-2-14 10:00 编辑
不晓得咋回事,PECMD的DEVI 命令:
- DEVI *sub D:\ABC,display或DEVI D:\ABC\AMD.inf
复制代码
等等方式在我的8.1RAMOS下硬是装不了显卡驱动,后来发现- 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=========================
|
评分
-
查看全部评分
|