找回密码
 加入
搜索
查看: 1604|回复: 2

[AU3基础] ini文件合并,IniWrite 与IniWriteSection的区别[已解决]

[复制链接]
发表于 2018-9-23 10:08:09 | 显示全部楼层 |阅读模式
本帖最后由 仙乃日 于 2018-9-23 11:11 编辑

有2个标准的ini文件,文件名分别为1.ini 2.ini
1.ini的内容为:
[AA]
A1=A

A3=3
[BB]
B1=1
[DD]
D1=1
D2=2
D3=3
2.ini的内容为:
[AA]
A1=1
A2=1
[BB]
B2=2
B3=3
[CC]
C1=1
C2=2
C3=3
现在要将2.ini的内容合并到1.ini文件中,得到更新后的1.ini文件内容为:
[AA]
A1=1
A3=3
A2=1
[BB]
B1=1
B2=2
B3=3
[DD]
D1=1
D2=2
D3=3
[CC]
C1=1
C2=2
C3=3
使用以下代码可以实现:
#include <_Ini.au3>
Local $ini_SN = _IniReadSectionNames(@ScriptDir & "\2.ini")
If Not @error Then
        For $i = 1 To $ini_SN[0]
                Local $ini_key = _IniReadSection(@ScriptDir & "\2.ini", $ini_SN[$i])
                If Not @error Then
                        For $P=1 To $ini_key[0][0]
                                IniWrite (@ScriptDir & "\1.ini", $ini_SN[$i], $ini_key[$P][0], $ini_key[$P][1] )
                        Next
                EndIf
        Next
EndIf
但如果使用IniWriteSection来,得到的1.ini文件内容就达到不到要求,相同字段名的内容会被2.ini单纯取代。
#include <_Ini.au3>
Local $ini_SN = _IniReadSectionNames(@ScriptDir & "\2.ini")
If Not @error Then
        For $i = 1 To $ini_SN[0]
                Local $ini_key = _IniReadSection(@ScriptDir & "\2.ini", $ini_SN[$i])
                If Not @error Then
                        IniWriteSection(@ScriptDir & "\1.ini", $ini_SN[$i], $ini_key)
                EndIf
        Next
EndIf

发表于 2018-9-23 10:22:38 | 显示全部楼层
说明里对IniWriteSection的描述:“如果字段已存在, 数据将覆盖.”,也许就是这个意思,清除字段下的所有数据,重写新的键与值
发表于 2018-9-25 18:11:01 | 显示全部楼层
按键来写覆盖键,按段来写覆盖段,有啥问题?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 23:45 , Processed in 0.079909 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表