如何在Windows批处理中用jq-win64.exe提取JSON字段并赋值给变量
可行解决方案
前置准备
确保你已经将jq-win64.exe放置在批处理文件同目录,或者将其所在路径加入Windows系统环境变量,保证命令行可以正常调用该工具。
核心语法说明
你需要使用jq的-r(原始输出)参数,避免提取的字符串前后自动包裹双引号:
- 提取第一条Result的ItemTitle字段:
.Result[0].ItemTitle - 提取第一条Result的Artists数组第一个元素:
.Result[0].Artists[0]
完整批处理代码
@echo off setlocal enabledelayedexpansion :: 提取ItemTitle字段存入变量 for /f "delims=" %%a in ('jq-win64.exe -r ".Result[0].ItemTitle" "song.json"') do ( set "ItemTitle=%%a" ) :: 提取Artists第一个元素存入变量 for /f "delims=" %%a in ('jq-win64.exe -r ".Result[0].Artists[0]" "song.json"') do ( set "Artist=%%a" ) :: 输出验证结果(可选,不需要可删除) echo ItemTitle=!ItemTitle! echo Artist=!Artist! endlocal
注意事项
- 如果你是直接在CMD窗口手动执行测试,需要把代码中的
%%a替换为%a - 如果
jq-win64.exe或者song.json的路径包含空格,一定要用英文双引号把完整路径包裹起来 - 若不需要后续使用变量,仅要输出指定格式,可直接用单条jq命令实现:
jq-win64.exe -r "\"ItemTitle=\(.Result[0].ItemTitle)","Artist=\(.Result[0].Artists[0])"" song.json
内容的提问来源于stack exchange,提问作者GavinD
相关产品推荐
相关产品推荐

