Windows 怎么在批处理脚本中解析复杂的 JSON 格式数据

夏辰酱_9001

夏辰酱_9001

2026-09-11

278人浏览

原创

Windows批处理不支持原生JSON解析,复杂结构易出错;推荐优先用PowerShell(Win7 SP1+自带)调用ConvertFrom-Json,或使用轻量jq工具;避免纯批处理硬解析嵌套/转义/含特殊字符的JSON。
Windows 批处理本身不支持原生 JSON 解析,尤其面对嵌套对象、数组、转义字符、多层结构等复杂格式时,纯 `for /f` + `delims/tokens` 方式极易出错或失效。但实际工作中仍有轻量级需求(比如提取某个固定路径的字段),可通过组合系统命令+外部工具实现可靠提取。关键不是“硬刚语法”,而是选对方法层级。

优先用 PowerShell 替代批处理

windows 7 sp1 及以后系统默认自带 powershell,它原生支持 json(convertfrom-json),语义清晰、容错强,且能处理任意深度嵌套:

  • 例如提取 {"data":{"user":{"id":123,"name":"Alice"}}} 中的 user.name
  • powershell -Command "$j=Get-Content data.json | ConvertFrom-Json; $j.data.user.name"
  • 结果直接输出 Alice,无需手动切分、去引号、跳空格
  • 若需在 .bat 中调用,可写成一行:for /f "delims=" %%i in ('powershell -Command "$j=gc data.json|ConvertFrom-Json; $j.data.user.id" 2^>nul') do set id=%%i

用轻量级外部工具(如 jq for Windows)

如果必须用 cmd 环境且不能依赖 PowerShell(如受限策略),推荐 jq —— 它是 JSON 处理的事实标准命令行工具,Windows 版本体积小、无依赖、单文件可执行:

  • 下载 jq.exe(官方 release 页面提供 Windows x64/x86 版)
  • 放入脚本同目录或系统 PATH
  • 提取 random_idjq -r ".random_id" data.json
  • 提取数组第 2 项的 name:jq -r ".items[1].name" data.json
  • 配合批处理变量赋值:for /f "delims=" %%a in ('jq -r ".token" response.json') do set TOKEN=%%a

避免用纯批处理硬解析复杂 JSON

网上常见“用 for /f delims=: tokens=2 提取值”的做法,只适用于扁平、无逗号/冒号干扰、无嵌套的极简 JSON(如 {"key":"value"})。一旦出现以下任一情况,就会失败:

windows-healing-gateway
windows-healing-gateway

通过任务计划程序自动监控并自修复 Windows 上的 OpenClaw Gateway,具备 AI 诊断和 Telegram 报警功能。

下载
  • 字段值本身含冒号或逗号(如 URL、时间戳、错误信息)
  • 存在嵌套对象或数组("config":{"timeout":30}
  • 字符串含转义字符("msg":"a\"b"
  • 键名含空格或特殊符号("user id":123

强行用字符串分割模拟解析,本质是正则脆弱匹配,维护成本高、不可靠,不建议用于生产环境。

临时方案:转为 PowerShell 再回传给批处理

若脚本主体是 .bat,又想保持兼容性,可把 JSON 解析逻辑外包给临时 PowerShell 片段:

  • 写一个 parse.ps1 脚本,接收 JSON 文件路径和查询路径(如 $.data.token
  • 在 .bat 中调用:powershell -ExecutionPolicy Bypass -File parse.ps1 data.json "$.data.token" > temp.txt
  • 再用 set /p TOKEN=<temp.txt> 读取结果</temp.txt>
  • 这样既规避了批处理能力短板,又不需要额外部署工具

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

windows系统 js json windows

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

417

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

820

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2372

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

796

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

689

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

354

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2116

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

3892

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

627

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HBuilderX Windows 安装手册
HBuilderX Windows 安装手册

共0课时 | 0人学习

phpEnv手册
phpEnv手册

共0课时 | 0人学习

好课诞生记
好课诞生记

共20课时 | 7.1万人学习