假设有123.ini内容如下,
[AIDA64 Business]版本=AIDA64 v4.30.2900/cn主页=http://www.aida64.com/报告类型=命令行: /CUSTOM计算机=CHINA-LING用户=ling
[DMI]BIOS|BIOS 属性|系统 BIOS 版本=0.1BIOS|BIOS 制造商|公司名称=Insyde Software Corp.系统|系统|制造商=Apple Inc.系统|系统|产品=MacBookAir6,2主板|主板|制造商=Apple Inc.主板|主板|产品=Mac-7DF21CB3ED6977E5主板|主板|序列号=12345678处理器1|处理器|制造商=Intel(R) Corporation处理器1|处理器|版本=Intel(R) Core(TM) i5-4250U CPU @ 1.30GHz
我要提取出DMI节的内容,代码如下:
READ 123.ini,*,&&AllContent
MESS 完整内容:%&AllContent%
ENVI &DMIContent=
ENVI &inDMI=0
ENVI &lineNum=0
FORX *NL &AllContent,&&line,
{
CALC #lineNum=%lineNum% + 1
MESS 第%lineNum%行:[%&line%]
IFEX $%&line%=[DMI], TEAM MESS 找到DMI节!| ENVI &inDMI=1
IFEX $%&inDMI%=1,!! IFEX $%&line%>=[,!! IFEX $%&line%<>[DMI], TEAM MESS 离开DMI节| ENVI &inDMI=0
IFEX $%&inDMI%=1,!! IFEX $%&line%<>[DMI], TEAM MESS 添加到DMI内容| ENVI &DMIContent=%&DMIContent%%&line%\r\n
}
MESS. DMI节内容:[%&DMIContent%]
代码运行后,能输出每一行的内容,但DMI节内容为空,请问哪儿错了?
把&去掉
哪个变量去掉前导符&?我把所有变量全部去掉改成全局变量,还是空值?
dhwc 哪个变量去掉前导符&?我把所有变量全部去掉改成全局变量,还是空值?
比较大小用ifex,比较字符串用find
//MESS 第%lineNum%行:[%&line%]
find $%&line%=[DMI], ENVI &inDMI=1 //TEAM MESS 找到DMI节!| ENVI &inDMI=1
IFEX $%&inDMI%=1,!! find $%&line%>=[,!! IFEX $%&line%<>[DMI], ENVI &inDMI=0 //TEAM MESS 离开DMI节| ENVI &inDMI=0
IFEX $%&inDMI%=1,!! find $%&line%<>[DMI], ENVI &DMIContent=%&DMIContent%%&line%\n //TEAM MESS 添加到DMI内容| ENVI &DMIContent=%&DMIContent%%&line%\r\n
MESS DMI节内容:[%&DMIContent%]
👍👍感谢版主
527104427 比较大小用ifex,比较字符串用find READ 123.ini,*,&&AllContent MESS 完整内容:%&A ...
这个代码有点小问题,如果dmi节下面还有别的节,他会一并显示出来?
这一句代码好像没起到作用?
IFEX $%&inDMI%=1,!! find $%&line%>=[,!! IFEX $%&line%<>[DMI], ENVI &inDMI=0
我修改了下
// 如果是节标记行
find $%&line%>=[,
// 如果是[DMI]节,开始收集,是其他节,停止收集
find $%&line%=[DMI], ENVI &inDMI=1!ENVI &inDMI=0
ELSE
// 如果不是节标记且在DMI节内,收集内容
IFEX $%&inDMI%=1, ENVI &DMIContent=%&DMIContent%%&line%\n
DMI输出为空了??
dhwc 这个代码有点小问题,如果dmi节下面还有别的节,他会一并显示出来? 这一句代码好像没起到作用? IFEX $%&inDMI%=1,!! find $%&line%>= ...
mstr * &line1=1,1,&line
find $%&line1%=[,
}!
527104427 READ 123.ini,*,&&AllContent ENVI &DMIContent= ENVI &inDMI=0 FORX *NL & ...
还是空值?
dhwc 还是空值?
用正则表达式找到某节点内容,并找到该节点下的键值:
#code=936T950 set^ EnviMode=1 set^ ForceLocal=1 set Section=DMI set Key=处理器1|处理器|版本 set str= read %CurDir%\123.ini,*,src sed -ex -f sec=0,.*?\n?\b*?\[%Section%\]\b*?\n{.*?}\n\b*?\[,\001,src find *=sec,!! sed -ex -f sec=0,.*?\n?\b*?\[%Section%\]\n{.*},\001,src find *<>sec, { sed -ex Key1=0,{[\[\]\{\}\(\)\|\*\.\?\+\-\^]},\\\001,Key sed -ex -f str=0,.*%Key1%={.*?}\n,\001,sec } mess [%str%]\n\n\n[%sec%]