批量过滤变量结果

问题描述 投票:0回答:1

在bat文件中我有变量: !和泰资讯! 包含:

(bootloader) hotainfo_len:0x0000005D (bootloader) "C_version":"C431","D_version":"D000","PLMN":"22 (bootloader) 210","BoardID":"8559","DeviceName":"VOG-L29", OKAY [  0.014s] Finished. Total time: 0.014s

在变量!hotainfo!我必须搜索“PLMN”并将结果“22”存储在新变量中

我试过了

for /f "tokens=2 delims=:" %%i in ('!hotainfo!| findstr /r /c:"PLMN"') do (set plmn=%%i)

但它导致蝙蝠力量退出

batch-file token batch-processing findstr
1个回答
0
投票
@ECHO Off
SETLOCAL ENABLEDELAYEDEXPANSION
SET "hotainfo=(bootloader) hotainfo_len:0x0000005D (bootloader) "C_version":"C431","D_version":"D000","PLMN":"22 (bootloader) 210","BoardID":"8559","DeviceName":"VOG-L29", OKAY [  0.014s] Finished. Total time: 0.014s"

SET "grabnext="
SET "plmn="
SET "hotainfo2=!hotainfo::= !"
FOR %%e IN (!hotainfo2!) DO IF DEFINED grabnext (FOR %%y IN (%%~e) DO IF NOT DEFINED plmn SET "plmn=%%y") ELSE IF %%e=="PLMN" SET "grabnext=y"
ECHO result=%plmn%
GOTO :EOF

清除

grabnext
plmn
的值。将
hotainfo2
设置为与
hotainfo
相同,但所有冒号都替换为空格。

然后以

hotainfo2
作为简单列表,依次将
%%e
设置为每个子字符串(以空格或逗号分隔)。

%%e
包含
"PLMN"
时,设置标志
grabnext

在下一个字符串上,删除括起来的引号并将结果解释为列表。将

plmn
设置为该列表的第一个元素,任何进一步设置
plmn
的尝试都将被忽略,因为它现在已定义。

使用布尔值

请注意,

FOR %%e IN (!hotainfo::= !)
未按预期运行。

© www.soinside.com 2019 - 2024. All rights reserved.