|
|
本帖最后由 chiannet 于 2026-8-18 11:43 编辑
搞了个从exe格式AMD芯片组驱动包提取纯驱动的脚本。各位看官再精炼精炼
20260818 的优化版本:
- @Echo Off&Setlocal Enabledelayedexpansion
- (Net session >Nul 2>&1)||(Powershell -Command "Start-Process '%~s0' -Verb RunAs"&&exit /b)
- Set z7=
- Set st=
- Set "ACD=AMD_Chipset_Drivers"
- For /f "Skip=1 Tokens=2,*" %%B in ('Reg Query "HKLM\SOFTWARE\7-Zip" /v "Path" 2^>Nul') Do (If Exist "%%C7z.exe" (Set "z7=%%C7z.exe" & Goto :Begin))
- Set "st=本机未安装 7-zip ?"
- Goto :End
- :Begin
- CD /d "%~DP0"
- Set "FN="
- :: 注意规范的文件名格式为:AMD_Chipset_Software_*.exe
- For /f "Delims=" %%A in ('Dir "AMD_Chipset_Software_*.exe" /B 2^>Nul') Do (
- Set /a Try=0
- Set "stt="
- Title 从%%A提取AMD芯片组纯驱动。
- Set "FN=%%A"
- Set "FV=%%~NA"
- Set "FV=!FV:AMD_Chipset_Software_=!"
- Del %ACD%.exe /f /q >Nul 2>Nul
- Echo.& Echo.& Echo. 正在解压 !FN! ......
- "%z7%" e "%%A" -y -o".\" "%ACD%.exe" >Nul 2>Nul
- If !ErrorLevel! EQU 0 (Call :B2) Else (Set "stt=7-Zip未能从 %FN% 抽出内层 exe,略过此文件。")
- If Defined stt (CALL :Print "!stt!" _)
- )
- If Not Defined FN Set "st=当前目录缺失AMD芯片组驱动 exe 格式原包,请到 AMD 官网下载!"
- :End
- If Defined ST (CALL :Print "%ST%")
- Timeout 5 >Nul 2>Nul
- Exit
- :B2
- Set "OUT=%ACD%_%FV%"
- Set "AMSI="
- (
- RD "%USERPROFILE%\AppData\Roaming\AMD\Chipset_Software" /s /Q
- RD "C:\AMD\Chipset_Software" /s /Q
- Tasklist | Find /i "%ACD%.exe" || (Start "" %ACD%.exe /a /q)
- Timeout 2
- For /f "Delims=" %%d in ('Dir "%USERPROFILE%\AppData\Roaming\AMD\Chipset_Software\%ACD%.msi" /S /B 2^>Nul') Do Set "AMSI=%%d"
- If Not Defined AMSI For /f "Delims=" %%d in ('Dir "C:\AMD\Chipset_Software\%ACD%.msi" /S /B 2^>Nul') Do Set "AMSI=%%d"
- If !Try! GTR 20 (Set "stt=无法获取 %FN% 内 %ACD%.msi,略过!" & Goto :Eof)
- If Not Defined AMSI (Set /a Try+=1 & Goto :B2)
- Powershell -NoProfile -Command "[void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.SendKeys]::SendWait(' ')"
- Tasklist | Find /i "%ACD%.exe" && (
- Taskkill /f /im "%ACD%.exe"
- For /f "Delims=" %%x in ('Dir "%Temp%\%ACD%.msi" /S /B 2^>Nul') Do RD "%%~Px" /S /Q
- )
- Del %ACD%.exe /F /Q
- RD "%Out%" /S /Q
- Msiexec /a "!AMSI!" /qn TARGETDIR="%~DP0%Out%"
- If !ErrorLevel! EQU 0 (Title 从 %FN% 提取AMD芯片组纯驱动成功。) Else (Set "stt=从 %FN% 提取纯驱动失败!略过。" & Goto :Eof)
- RD "%OUT%\program files" /S /Q
- For %%u in (rtf txt msi) Do Del "%OUT%\*.%%u" /S /F /Q
- MD "%OUT%\WTx64"
- MD "%OUT%\W11x64"
- ) >Nul 2>Nul
- If Exist "%OUT%\Chipset_Software" (Set "SRC=%OUT%\Chipset_Software") Else (Set "SRC=%OUT%")
- Echo.& Echo. 正在分拣 Win10/Win11 驱动文件......
- (
- Del "%SRC%\*.xml" /S /F /Q
- For /f "Delims=" %%x in ('Dir "%SRC%" /B /A:D') Do (
- Set /a Has10=0,Has11=0
- If Exist "%SRC%\%%x\WTx64" Set /a Has10=1
- If Exist "%SRC%\%%x\W11x64" Set /a Has11=1
- Set /a HasB=!Has10!+!Has11!
- IF !HasB! EQU 2 (Call :D1D 0000 "%%x" "%SRC%") Else (IF !Has11! EQU 1 (Call :D1D W11x64 "%%x" "%SRC%") Else (IF !Has10! EQU 1 Call :D1D WTx64 "%%x" "%SRC%"))
- If /i "%SRC%"=="AMD_Chipset_Drivers_%FV%" RD /S /Q "%SRC%\%%x"
- )
- RD /S /Q "%OUT%\Chipset_Software"
- ) >Nul 2>Nul
- Call :Print "成功提取 %FV% 纯驱动到“%~DP0%OUT%”。" _
- Goto :Eof
- :D1D
- For %%K in (WTx64 W11x64) Do (
- If "%~1"=="0000" (Set "P=%%K") Else (Set "P=%~1")
- Set /a i=0
- For /f "Delims=" %%U in ('Dir "%~3\%~2\!P!\*.inf" /S /B 2^>Nul') Do (Set /a i+=1)
- If !i! GTR 0 (
- MD "%OUT%\%%K\%~2\!P!"
- Xcopy "%~3\%~2\!P!" "%OUT%\%%K\%~2\!P!" /E /Q /h /R /y
- )
- )
- Goto :Eof
- :Print
- Echo.
- Echo. %~1
- If "%~2"=="_" Echo. ________________________
- Goto :Eof
复制代码

|
评分
-
查看全部评分
|