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

本文提供了一段代码示例,展示如何使用脚本批量解析INI配置文件,并获取所有section和对应的key-value对。通过字符串操作和正则表达式,实现了灵活的读取方式,即使不知道具体的section和key也能获取全部配置信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IniRead, OutputVar, Filename, Section, Key [, Default]

iniread只能读取指定section指定key值。在不知道section名称和key名称的情况下如何循环读取所有的值?
举报|2014-05-31 14:57提问者采纳
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命令.

原文摘自:http://zhidao.baidu.com/link?url=hwTXNFFnSKHwstBo15cYy6z6zsBIQpUYtepNNg_ifW_Rpl1XtVnTF9qb5oVFRHG6gXOXPAIVZ56LiZbuooAY0dgt69eE0dOmnLKNtrkTay3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值