AutoHotkey如何循环读取ini文件里所有section的所有key值

IniRead,OutputVar,Filename,Section,Key[,Default]iniread只能读取指定section指定key值。在不知道sectio... IniRead, OutputVar, Filename, Section, Key [, Default]

iniread只能读取指定section指定key值。在不知道section名称和key名称的情况下如何循环读取所有的值?
展开
 我来答
sunshinezxk
推荐于2016-07-07 · TA获得超过661个赞
知道小有建树答主
回答量:355
采纳率:50%
帮助的人:421万
展开全部
FileSelectFile, file, , , 请选择ini文件, ini配置文件(*.ini) ;选择文件
if file=
{
MsgBox, 0, 错误, 您为选择任何文件
Reload
}
sections =
FileRead, filecontent, %file% ;加载文件到变量
StringSplit, line, filecontent, `n, , ;用函数分割变量为数组
Loop ;循环
{
if A_Index > %line0%
Break
content = % line%A_Index% ;赋值当前行
StringReplace, content, content, `r, , All ;替换特殊字符
FSection := RegExMatch(content, "\[.*\]") ;正则表达式匹配section
if FSection = 1 ;如果找到
{
TSection := RegExReplace(content, "\[(.*)\]", "$1") ;正则替换并赋值临时section $为向后引用
sections = %sections%%TSection%| ;用|串接所有section 方便使用列出
%TSection%keys =
}
Else
{
FKey := RegExMatch(content, ".*=.*") ;正则表达式匹配key
if FKey = 1
{
TKey := RegExReplace(content, "(.*)=.*", "$1") ;正则替换并赋值临时key
StringReplace, TKey, TKey, ., _, All
TKey2=%Tkey%|
%TSection%keys = % %TSection%keys TKey2 ;;用|串接当前section下所有key 方便使用列出
TValue := RegExReplace(content, ".*=(.*)", "$1") ;正则替换并赋值临时value
%TSection%_%TKey%=%TValue%
}
}
}
ListVars ;调试情况 列出所有变量
Pause

需要再把串起来的section\key分割成数组请使用Stringsplit命令.

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式