使用Batch脚本从curl输出的单行txt文件中提取PNG链接URL
Batch提取单行JSON中目标PNG链接的实现方案
实现逻辑
不需要安装jq等第三方JSON处理工具,纯用Windows Batch原生能力即可完成提取,适配当前单行返回文件场景:
- 保留原有curl请求逻辑,将接口返回写入
runone.txt - 读取文件全文到内存变量,通过固定字符串前缀定位到目标URL的起始位置
- 以URL结尾的双引号为分隔符做截断,拿到完整PNG链接存入变量,供后续逻辑调用
完整可运行代码
@echo off setlocal enabledelayedexpansion :: 原有curl请求命令,无需修改 curl -X "GET" %runone% -H "accept: application/json" -o runone.txt :: 读取接口返回的单行JSON内容 set /p api_resp=<runone.txt :: 匹配目标字段的固定前缀,对应JSON里data.link.href的前置标识 set "prefix=data":{"link":{"href":" :: 截取前缀之后的所有剩余内容 call set "remain_str=%%api_resp:*!prefix!=%%" :: 以双引号为分隔符取第一段,即为完整PNG链接 for /f tokens^=1^ delims^=^" %%i in ("!remain_str!") do set "png_url=%%i" :: 后续逻辑直接调用!png_url!即可,例如下载图片可以直接写: :: curl "!png_url!" -o target.png :: 如果需要在endlocal之后仍使用该变量,执行以下语句做变量提升 endlocal&set "png_url=%png_url%"
注意事项
- 该方案仅依赖系统原生能力,在所有默认Windows环境下均可直接运行,无需额外预装软件
- 匹配逻辑和给出的JSON结构强绑定,只要接口不调整
data.link.href的层级结构,提取结果就稳定有效 - 如果后续需要提取其他字段的内容,只需修改
prefix变量里的匹配前缀为对应字段的固定标识即可 - 提取到的
png_url变量为标准URL格式,可直接传入后续下载、请求类命令使用,无需额外转义处理
内容的提问来源于stack exchange,提问作者mranonym
相关产品推荐
相关产品推荐

