【发布时间】:2021-08-31 12:59:47
【问题描述】:
使用带有 JQ 的 Windows 批处理文件并尝试通过管道传输选择过滤器。
使用 JQ 解析的示例 Json:
{
"name": "test-mmc-deploy",
"id": "local$3d2075c5-73c0-47aa-8df5-cee3a70f68c4",
"lastModified": "Mon, 1 May 2017 13:56:15.980 AEST",
"servers": [
"local$520ee705-bdbb-4132-94cf-63bb213d2b46"
],
"status": "DEPLOYED",
"applications": [
"local$f3d791bd-14d9-4491-9541-5fa04d8c3164"
],
"href": "http://localhost:9090/mmc-console-3.8.2/api/deployments/local$3d2075c5-73c0-47aa-8df5-cee3a70f68c4",
"clusterNames": [],
"reconciled": false,
"clusterIds": []
}
普通命令行 JQ 与 Curl 配合使用,输出如下:
curl --basic -u admin:admin http://localhost:9090/mmc-console-3.8.2/api/deployments | jq ".data[] | select(.name==\"test-mmc-deploy\").id
“本地$3d2075c5-73c0-47aa-8df5-cee3a70f68c4”
试图让下面的命令在 Windows 批处理文件中工作正在创造一个转义字符的噩梦。需要一些帮助。
for /f "tokens=*" %%a in ('echo %%app_deploy_list%% ^| jq "".data[] ^| select(.name==\"test-mmc-deploy\"^).id""') do (set app_id=%%a)
echo Application found: %app_id%
其中 %%app_deploy_list%% 保存上面声明的 json。
我得到的错误是: 'select' 未被识别为内部或外部命令
【问题讨论】:
-
你为什么用
%%app_deploy_list%%而不是%app_deploy_list%? -
嗨,SomethingDark,这是一个错误,我会删除它,但不会对选择错误的批处理编译器产生影响。
标签: json windows batch-file mule jq