仙乃日 发表于 2018-9-23 10:08:09

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

本帖最后由 仙乃日 于 2018-9-23 11:11 编辑

有2个标准的ini文件,文件名分别为1.ini 2.ini
1.ini的内容为:

A1=A

A3=3

B1=1

D1=1
D2=2
D3=32.ini的内容为:

A1=1
A2=1

B2=2
B3=3

C1=1
C2=2
C3=3现在要将2.ini的内容合并到1.ini文件中,得到更新后的1.ini文件内容为:

A1=1
A3=3
A2=1

B1=1
B2=2
B3=3

D1=1
D2=2
D3=3

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
                Local $ini_key = _IniReadSection(@ScriptDir & "\2.ini", $ini_SN[$i])
                If Not @error Then
                        For $P=1 To $ini_key
                              IniWrite (@ScriptDir & "\1.ini", $ini_SN[$i], $ini_key[$P], $ini_key[$P] )
                        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
                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的描述:“如果字段已存在, 数据将覆盖.”,也许就是这个意思,清除字段下的所有数据,重写新的键与值

skyfree 发表于 2018-9-25 18:11:01

按键来写覆盖键,按段来写覆盖段,有啥问题?
页: [1]
查看完整版本: ini文件合并,IniWrite 与IniWriteSection的区别[已解决]