You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用批处理脚本提取JSON文件指定字段的值并输出

提取JSON字段值的批处理解决方案

你的批处理脚本无法正常工作主要是因为变量延迟扩展未启用,以及for /f的tokens参数设置有误。以下是修正后的可行脚本:

@echo off
setlocal enabledelayedexpansion

set "LOC=C:\files\storage.json"

for /f delims^=^"^ tokens^=4 %%A in ('findstr /R "field_10101" "%LOC%"') do set "new=%%A"

echo !new!
endlocal

核心修正说明:

  • 启用延迟扩展:添加setlocal enabledelayedexpansion并改用!new!输出变量。批处理默认会在执行前预解析所有%变量%,导致循环内赋值的变量无法即时获取,延迟扩展可以解决这个问题。
  • 调整tokens参数:目标行格式为"field_10101" : "GB",按双引号分割后,第4个token才是GB(分割后的序列:空字符串、field_10101、空字符串、GB、空字符串),因此将tokens=3改为tokens=4。
  • 路径添加引号:把%LOC%改为"%LOC%",避免路径包含空格时出现解析错误。

兼容格式变动的进阶方案

如果JSON的空格位置可能变化,推荐用双层for /f拆分,先提取冒号后的内容,再从中截取引号内的值:

@echo off
setlocal enabledelayedexpansion

set "LOC=C:\files\storage.json"

for /f "tokens=2 delims=:" %%A in ('findstr /R "field_10101" "%LOC%"') do (
    set "value_part=%%A"
    for /f delims^=^"^ tokens^=2 %%B in ("!value_part!") do set "new=%%B"
)

echo !new!
endlocal

这个方案能适应更多格式变化,比如冒号前后的空格数量不同的情况。

内容的提问来源于stack exchange,提问作者johnny_k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:15:43