autohotkey原生支持ini文件读写删及遍历:一、iniread安全读取键值并设默认值;二、iniwrite写入或覆盖键值;三、inidelete删除键或整节;四、loop配合手动解析遍历节内键值;五、注意特殊字符处理与命名规范。

如果您在使用AutoHotkey编写脚本时需要持久化保存用户设置或运行参数,INI文件是一种轻量、易读且被原生支持的配置格式。AutoHotkey提供了内置命令直接读写INI文件,无需额外解析库。以下是具体操作步骤:
一、使用IniRead读取INI文件中的值
IniRead命令用于从指定INI文件的指定节(Section)和键(Key)中提取字符串值,并可设置默认值以防键不存在。该操作安全可靠,不会修改原文件。
1、确保INI文件路径正确,例如配置文件位于脚本同级目录下的config.ini;
2、在脚本中调用IniRead,语法为:IniRead, 输出变量名, 文件路径, 节名, 键名, 默认值;
3、例如读取[Settings]节下的Theme键:IniRead, vTheme, config.ini, Settings, Theme, Light;
4、执行后,变量vTheme将获得对应值,若键不存在则自动赋值为Light。
二、使用IniWrite写入或更新INI文件中的值
IniWrite命令用于向INI文件的指定节写入键值对,若节或键不存在则自动创建;若键已存在,则覆盖原有值。该操作会直接修改磁盘上的INI文件。
1、确认目标INI文件具有写入权限,路径不可为只读或系统受保护位置;
2、使用语法:IniWrite, 值, 文件路径, 节名, 键名;
3、例如将Dark写入[Settings]节的Theme键:IniWrite, Dark, config.ini, Settings, Theme;
4、如需写入数值型内容(如端口号),仍以字符串形式传入,INI文件本身不区分数据类型。
三、使用IniDelete删除INI文件中的键或整节
IniDelete用于移除INI文件中特定键的定义,或清空整个节(当省略键名时)。该操作不可逆,执行前建议备份原始INI文件。
1、删除单个键:语法为IniDelete, 文件路径, 节名, 键名;
2、例如清除[Settings]节中的AutoStart项:IniDelete, config.ini, Settings, AutoStart;
3、删除整节(包括其下所有键):省略键名,仅保留节名,如:IniDelete, config.ini, TempData;
4、执行后,对应节或键将从文件中物理移除,保存后的INI文件不再包含该条目。
四、使用Loop读取INI文件中某个节的所有键值对
Loop命令配合Read模式可遍历指定节内全部键名,再结合IniRead逐个提取值,适用于动态加载未知数量配置项的场景。
1、启用循环前确保节名准确,大小写敏感;
2、使用Loop, Read, %A_ScriptDir%\config.ini无法直接遍历节——应改用Loop, Parse, % IniReadAllKeys("config.ini", "Settings"), `n(需先定义辅助函数);
3、更标准做法是先用IniRead读取节名列表,再嵌套循环;但AHK v1原生命令不提供IniReadAllKeys,需手动构造:先读取节内任意键确认节存在,再用Loop, Read配合字符串解析模拟;
4、推荐替代方案:使用FileReadLine逐行扫描INI文件,识别[Section]与Key=Value结构,自行提取键名——此方式完全可控,且避免依赖未内置功能。
五、处理带空格或特殊字符的键名与节名
INI文件规范允许节名和键名包含空格、括号、连字符等字符,但AutoHotkey的IniRead/IniWrite命令在解析时默认按空白符分割,可能导致误判。需通过引号包裹或转义规避解析错误。
1、若节名含空格(如[User Preferences]),直接写入命令即可,AHK自动识别方括号边界;
2、若键名含等号或换行(极罕见),应在写入前用StrReplace预处理,或改用Base64编码存储;
3、读取结果中若含前导/尾随空格,可用Trim函数清理:vValue := Trim(vValue);
4、为确保兼容性,建议配置项命名采用snake_case格式(如max_connections),避免使用双引号、分号、反斜杠等INI元字符。











