Windows批处理如何通过GET返回值筛选有效软件下载链接存入文本
解决方案
问题1:HTTP状态码检测与有效链接筛选
实现思路
通过wget蜘蛛模式抓取请求响应头,提取HTTP状态码后按规则过滤,仅将符合要求的链接写入有效链接文件。你可以自行调整版本号生成逻辑和有效状态码的判断规则。
批处理实现代码
@echo off setlocal enabledelayedexpansion :: 配置项:替换为你的实际下载前缀、有效链接输出路径 set "DOWNLOAD_PREFIX=https://你的目标站点下载路径/" set "OUTPUT_VALID_FILE=valid_program_links.txt" :: 清空旧的有效链接文件 type nul > %OUTPUT_VALID_FILE% :: 版本号遍历逻辑:适配你1.55.50~1.57.99的范围需求 for /l %%m in (55,1,57) do ( :: 1.55版本起始为50,其余两位大版本起始为0 if %%m equ 55 (set /a n_start=50) else (set /a n_start=0) for /l %%n in (!n_start!,1,99) do ( set "FULL_URL=!DOWNLOAD_PREFIX!programv1.%%m.%%n.zip" :: 提取响应状态码 for /f "tokens=2" %%s in ('wget --spider -S "!FULL_URL!" 2^>^&1 ^| findstr /r "^ HTTP/.*"') do ( :: 按需添加有效状态码判断,示例为200、302算有效 if "%%s"=="200" echo !FULL_URL! >> %OUTPUT_VALID_FILE% if "%%s"=="302" echo !FULL_URL! >> %OUTPUT_VALID_FILE% ) ) ) endlocal
后续直接用你原有wget命令的--input-file参数指定生成的valid_program_links.txt即可,不会再产生大量无效请求日志。
问题2:使用wget -A参数免生成无效链接
前置条件
该方案仅适用于目标下载目录开启了公开目录索引的场景,也就是直接访问下载目录的根URL可以看到所有文件列表。
实现思路
直接递归爬取目标下载目录,通过-A指定文件名匹配规则,搭配--accept-regex做精准的版本范围正则校验,wget会自动识别目录下存在的符合规则的文件,不需要预生成全量版本链接。
命令示例
wget --timestamping --referer foo --recursive --no-parent ^ -A "programv*.zip" --accept-regex "programv1\.5[5-7]\.[0-9]+\.zip" ^ --show-progress --append-output=C:\Path\%Timestamp%_program.log ^ https://你的目标站点下载根目录/
如果目标站点未开启目录索引,该方案无法使用,建议优先采用问题1的有效链接筛选方案。
内容的提问来源于stack exchange,提问作者dimarco76
相关产品推荐
相关产品推荐

