如何使用Windows批处理脚本下载GitHub最新发布版本?
解决方案:Windows批处理脚本提取GitHub发布下载链接并下载
我帮你准备了两个适配Windows批处理的方案,都不需要用PowerShell或wget,纯依托curl和批处理自带命令(可选轻量工具jq来提升可靠性):
方案1:纯批处理(无第三方工具依赖)
这个方案只用Windows自带的批处理命令和curl,适合不想额外安装工具的场景:
@echo off setlocal enabledelayedexpansion :: 1. 获取最新Release的API数据并保存到临时文件 curl -s https://api.github.com/repos/ActualMandM/cemu_graphic_packs/releases/latest > temp.json :: 2. 提取包含下载链接的行,并清理出纯净URL for /f "tokens=2 delims=:" %%a in ('findstr /i "browser_download_url" temp.json') do ( set "raw_url=%%a" :: 去掉字符串中的双引号 set "clean_url=!raw_url:"=!" :: 去掉字符串首尾的空格 set "clean_url=!clean_url: =!" ) :: 3. 用curl下载文件(-L处理GitHub的跳转链接,-o指定输出文件名) curl -L -o graphicPacks_latest.zip !clean_url! :: 4. 清理临时文件 del temp.json endlocal echo 下载完成!文件已保存为graphicPacks_latest.zip
关键步骤说明:
setlocal enabledelayedexpansion:启用延迟变量扩展,确保在for循环内部能正确修改和读取变量findstr /i "browser_download_url":从API返回的JSON中筛选出包含目标链接的行- 两次字符串替换:分别去掉链接前后的双引号和多余空格,得到可直接使用的纯净URL
curl -L:处理GitHub下载链接的自动重定向,避免下载失败
方案2:用jq增强(更可靠的JSON解析)
如果能接受安装一个轻量的命令行JSON工具jq,这个方案会更稳定——纯批处理的字符串截取容易受JSON格式变化影响,而jq是专门的JSON处理器,能精准定位链接:
- 先下载
jq.exe(放到脚本同目录或系统PATH路径下即可) - 使用以下脚本:
@echo off :: 1. 用jq直接提取第一个发布资产的下载链接(-r参数输出不带引号的原始字符串) for /f %%a in ('curl -s https://api.github.com/repos/ActualMandM/cemu_graphic_packs/releases/latest ^| jq -r ".assets[0].browser_download_url"') do set "download_url=%%a" :: 2. 下载文件 curl -L -o graphicPacks_latest.zip %download_url% echo 下载完成!文件已保存为graphicPacks_latest.zip
优势:
.assets[0].browser_download_url直接定位到发布资产数组的第一个文件的下载链接,完全不受JSON换行、空格格式变化的影响- 代码更简洁,出错概率更低
注意事项:
- 确保你的Windows系统已经安装了curl:Windows 10 1809及以后版本默认自带curl,老版本需要手动下载curl.exe并放到PATH中
- 如果目标仓库有多个发布文件,方案1会取最后一个匹配的链接,方案2可以修改
[0]为对应索引(比如[1]取第二个文件)
内容的提问来源于stack exchange,提问作者Torph




