批处理中如何从类JSON格式的环境变量字符串提取PLMN值
批处理提取PLMN值的正确方法
原命令错误原因
你之前的命令直接把!hotainfo!的内容放到for /f的命令执行块里,系统会把字符串里的(bootloader)、OKAY这些内容当成命令去执行,这必然导致批处理崩溃退出。正确的做法是先把变量内容输出,再传递给findstr处理。
解决步骤
首先确保批处理开头已经开启延迟变量扩展:
setlocal enabledelayedexpansion
方法一:分步提取
- 先过滤出包含PLMN的片段:
for /f "tokens=2 delims=:" %%i in ('echo !hotainfo! ^| findstr /r /c:"PLMN"') do set "plmn_raw=%%i"
这里的^|是管道符的转义写法,必须添加,否则for会解析错误。
- 从提取到的片段中分离出PLMN的数值部分:
for /f tokens^=2^ delims^=^" %%j in ("!plmn_raw!") do ( for /f %%k in ("%%j") do set "plmn=%%k" )
- 第一个内层
for用双引号做分隔符,取出"22 (bootloader) 210"里的22 (bootloader) 210 - 第二个内层
for默认用空格做分隔符,取出第一个值22
方法二:合并为单条命令
把两步合并到一起,减少中间变量:
for /f "tokens=2 delims=:" %%i in ('echo !hotainfo! ^| findstr /r /c:"PLMN"') do ( for /f tokens^=2^ delims^=^" %%j in ("%%i") do ( for /f %%k in ("%%j") do set "plmn=%%k" ) )
验证结果
执行完上述命令后,你可以用echo !plmn!查看结果,输出应为22。
内容的提问来源于stack exchange,提问作者user9745396
相关产品推荐
相关产品推荐

