在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)
但它导致蝙蝠力量退出
@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::= !)
未按预期运行。