找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 2847|回复: 0

[系统相关] 批处理NVIDIA显卡驱动版本检测自动下载,支持静默安装

[复制链接]
发表于 2025-7-26 08:59:27 | 显示全部楼层 |阅读模式
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. title NVIDIA 驱动程序自动下载工具 by.小南瓜
  4. color 0A
  5. set "FileTemp=%temp%\NvidiaUpdate.log"
  6. del "%FileTemp%" 2>nul >nul

  7. where curl >nul 2>nul || (
  8.     echo 错误:未找到 curl 命令,请安装 curl 后重试
  9.     echo 可以从 https://curl.se/windows/ 下载
  10.     pause
  11.     exit /b 1
  12. )

  13. set "BaseURL=https://gfwsl.geforce.cn/services_toolkit/services/com/nvidia/services/AjaxDriverService.php"
  14. set "API_Params=func=DriverManualLookup&psid=120&pfid=929&osID=57&languageCode=2052&isWHQL=1&dch=1&sort1=0&numberOfResults=1"

  15. echo.
  16. echo [1/4] 正在获取最新驱动版本...
  17. curl -s -k -o "%FileTemp%" "%BaseURL%?%API_Params%"

  18. if not exist "%FileTemp%" (
  19.     echo 错误:无法获取驱动信息,请检查网络连接
  20.     pause
  21.     exit /b 1
  22. )

  23. if %~z0 LSS 100 (
  24.     echo 错误:API响应数据异常
  25.     type "%FileTemp%"
  26.     del "%FileTemp%" 2>nul
  27.     pause
  28.     exit /b 1
  29. )

  30. set "Ver="
  31. set "ReleaseDate="
  32. for /f "delims=" %%i in ('powershell -Command "(Get-Content -Path '%FileTemp%' -Raw | ConvertFrom-Json).IDS[0].downloadInfo.Version" 2^>nul') do (
  33.     set "Ver=%%i"
  34. )
  35. for /f "delims=" %%i in ('powershell -Command "(Get-Content -Path '%FileTemp%' -Raw | ConvertFrom-Json).IDS[0].downloadInfo.ReleaseDateTime" 2^>nul') do (
  36.     set "ReleaseDate=%%i"
  37. )

  38. if not defined Ver (
  39.     echo 错误:无法解析驱动版本信息
  40.     echo API返回内容:
  41.     type "%FileTemp%"
  42.     del "%FileTemp%" 2>nul
  43.     pause
  44.     exit /b 1
  45. )

  46. if not defined ReleaseDate (
  47.     set "ReleaseDate=未知发布日期"
  48. )

  49. echo.
  50. echo ========================================
  51. echo  检测到最新驱动版本:!Ver!
  52. echo  发布日期:!ReleaseDate!
  53. echo ========================================
  54. echo.

  55. choice /c YNC /n /m "请选择操作 [Y]下载 [N]取消 [C]查看详情: "
  56. if errorlevel 3 (
  57.     echo.
  58.     echo 驱动详细信息:
  59.     powershell -Command "(Get-Content -Path '%FileTemp%' -Raw | ConvertFrom-Json).IDS[0] | Format-List"
  60.     echo.
  61.     choice /c YN /n /m "是否下载此版本驱动 [Y/N]? "
  62.     if errorlevel 2 (
  63.         echo 操作已取消
  64.         del "%FileTemp%" 2>nul
  65.         pause
  66.         exit /b
  67.     )
  68. )
  69. if errorlevel 2 (
  70.     echo 操作已取消
  71.     del "%FileTemp%" 2>nul
  72.     pause
  73.     exit /b
  74. )

  75. set "DownloadURL=https://cn.download.nvidia.cn/Windows/%Ver%/%Ver%-desktop-win10-win11-64bit-international-dch-whql.exe"
  76. set "OutputFile=%~dp0%Ver%-desktop-win10-win11-64bit-international-dch-whql.exe"

  77. if exist "%OutputFile%" (
  78.     echo.
  79.     choice /c OR /n /m "文件已存在:[O]覆盖 [R]重命名: "
  80.     if errorlevel 2 (
  81.         set /p "CustomName=请输入新文件名(不含扩展名): "
  82.         set "OutputFile=%~dp0!CustomName!.exe"
  83.     )
  84. )

  85. echo.
  86. echo [2/4] 正在准备下载...
  87. echo 下载链接: %DownloadURL%
  88. echo 保存位置: %OutputFile%
  89. echo.

  90. set "retry=0"
  91. :download_retry
  92. echo [3/4] 正在下载驱动程序 (尝试 !retry!/3)...
  93. curl -# -k -L -H "Referer: https://www.nvidia.cn" -o "%OutputFile%" "%DownloadURL%"

  94. if not exist "%OutputFile%" (
  95.     echo 错误:下载失败!
  96.     set /a "retry+=1"
  97.     if !retry! LSS 3 (
  98.         echo 将在5秒后重试...
  99.         timeout /t 5 >nul
  100.         goto download_retry
  101.     )
  102.     echo 错误:多次尝试后仍下载失败
  103.     pause
  104.     exit /b 1
  105. )

  106. set "FileSize=0"
  107. for %%F in ("%OutputFile%") do set "FileSize=%%~zF"

  108. if !FileSize! LSS 800000000 (
  109.     echo.
  110.     echo 警告:文件大小异常(可能下载不完整)
  111.     echo 实际大小:!FileSize! 字节
  112.     choice /c YN /n /m "是否重新下载 [Y/N]? "
  113.     if errorlevel 2 (
  114.         echo 跳过重新下载
  115.     ) else (
  116.         set /a "retry+=1"
  117.         if !retry! LSS 3 (
  118.             goto download_retry
  119.         )
  120.         echo 错误:多次尝试后仍下载失败
  121.         pause
  122.         exit /b 1
  123.     )
  124. )

  125. echo.
  126. echo [4/4] 正在计算文件校验值...
  127. set "md5_value="
  128. for /f "tokens=1* delims=:" %%a in ('certutil -hashfile "%OutputFile%" MD5 ^| findstr /v "hash" ^| findstr /v "CertUtil"') do (
  129.     set "md5_line=%%a"
  130.     set "md5_value=!md5_line: =!"
  131. )

  132. del "%FileTemp%" 2>nul
  133. echo.
  134. echo ====== 下载完成 ======
  135. echo.
  136. echo 文件路径: %OutputFile%
  137. echo 文件大小: !FileSize! 字节
  138. echo MD5 校验: !md5_value!
  139. echo.
  140. echo 下载验证:
  141. echo 1. 校验值比对: !md5_value!
  142. echo 2. 安装验证: 运行安装程序检查完整性

  143. echo.
  144. choice /c 123 /n /m "请选择安装选项 [1]启动安装程序 [2]静默安装 [3]取消安装: "
  145. if errorlevel 3 (
  146.     echo 安装已取消
  147. ) else if errorlevel 2 (
  148.     echo 正在静默安装驱动程序...
  149.     echo 注意:静默安装将在后台运行,不显示安装界面
  150.     echo 安装完成后将自动关闭此窗口
  151.     start "" /WAIT "%OutputFile%" /s
  152.     echo.
  153.     echo 静默安装已完成!
  154. ) else (
  155.     echo 正在启动安装程序...
  156.     start "" "%OutputFile%"
  157. )

  158. echo.
  159. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
smss + 1 可以

查看全部评分

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

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 04:44 , Processed in 0.010109 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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