如何用curl和批处理文件仅下载GitHub上yt-dlp的最新版yt-dlp.exe
如何用curl和批处理文件仅下载GitHub上yt-dlp的最新版yt-dlp.exe
嘿,我来帮你搞定这个问题!你现在的脚本会把最新发布里所有带browser_download_url的文件都拉下来,这是因为GitHub API返回的最新release数据里包含了好几个下载链接(比如源码压缩包、其他平台的版本),咱们只要加个过滤条件,就能只拿到yt-dlp.exe的链接啦。
给你两个可行的批处理脚本方案,选哪个都行:
方案一:用延迟变量处理引号
@echo off setlocal enabledelayedexpansion :: 筛选出仅包含yt-dlp.exe的下载链接并下载 for /f "tokens=2 delims=:, " %%A in ('curl -ks https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest ^| findstr "browser_download_url.*yt-dlp.exe"') do ( :: 去掉链接前后的双引号 set "dl_url=%%A" set "dl_url=!dl_url:"=!" :: 执行下载 curl -kOL "!dl_url!" :: 找到链接就退出循环,避免重复操作 goto :finish ) :finish endlocal echo yt-dlp.exe 最新版下载完成!
方案二:嵌套for循环直接提取干净链接
这个版本不用延迟变量,用两层for循环来处理引号,更简洁:
@echo off for /f "tokens=1,* delims=:" %%A in ('curl -ks https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest ^| findstr "browser_download_url.*yt-dlp.exe"') do ( :: 用双引号作为分隔符,提取中间的URL for /f tokens^=2^ delims^=^" %%B in ("%%B") do ( curl -kOL "%%B" ) ) echo 下载完成!
关键说明:
findstr "browser_download_url.*yt-dlp.exe"这一步是核心!它会从API返回的内容里,只保留包含yt-dlp.exe的下载链接行,彻底避免下载其他无关文件。- 脚本里的
-k参数是用来忽略SSL证书验证的,如果你的网络环境不需要这个,可以直接去掉,让下载更安全。 - Windows 10及以上系统默认已经自带
curl了,老版本Windows可能需要单独安装curl才能运行这个脚本。
备注:内容来源于stack exchange,提问作者Flaver-D
相关产品推荐
相关产品推荐

