找回密码  加入

AUTOIT CN

搜索
查看: 150|回复: 4

[效率算法] ini文件合并,有啥好办法?

[复制链接]
发表于 2019-1-10 08:42:36 | 显示全部楼层 |阅读模式
; 将2.ini的内容合并到1.ini文件中,得到更新后的1.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
            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

以上代码效率太低了

发表于 2019-1-10 14:18:27 | 显示全部楼层
两个文件有重复项吗?
 楼主| 发表于 2019-1-11 16:33:15 | 显示全部楼层
citysvip 发表于 2019-1-10 14:18
两个文件有重复项吗?

有一些是重复的
发表于 7 天前 | 显示全部楼层
  1. #include <MsgBoxConstants.au3>
  2. #include <WinAPIFiles.au3>
  3. #include <Array.au3>

  4. Example()

  5. Func Example()
  6.         $sFilePath = @ScriptDir & "\au31.ini"
  7.     $sFilePath1 = @ScriptDir & "\au32.ini"

  8.         $a_sour = IniReadSectionNames($sFilePath)
  9.         $n_sour = $a_sour[0]
  10.         _ArrayDelete($a_sour, 0)
  11.         $a_copy = IniReadSectionNames($sFilePath1)
  12.         $n_copy = $a_copy[0]
  13.         _ArrayDelete($a_copy, 0)
  14.         For $i = 0 to $n_copy - 1
  15.            $aRs = _ArrayFindAll($a_sour, $a_copy[$i])
  16.            ConsoleWrite(UBound($aRs) & @CRLF)
  17.            If UBound($aRs) > 0 Then
  18.                   $ini_key = IniReadSection($sFilePath1, $a_copy[$i])
  19.                   For $p = 1 To $ini_key[0][0]
  20.                          IniWrite($sFilePath, $a_copy[$i], $ini_key[$p][0], $ini_key[$p][1])
  21.                   Next
  22.                   IniDelete($sFilePath1, $a_copy[$i])
  23.            EndIf
  24.         Next
  25.     genFile($sFilePath, $sFilePath1)
  26. EndFunc

  27. Func genFile($sf_sour, $sf_copy)
  28.     Local $hFileOpen = FileOpen($sf_copy, $FO_READ)
  29.         Local $sFileRead = FileRead($hFileOpen)
  30.         FileClose($hFileOpen)
  31.         Local $hFileOpen = FileOpen($sf_sour, $FO_APPEND)
  32.     FileWrite($hFileOpen, $sFileRead)
  33.         FileClose($hFileOpen)
  34. EndFunc
复制代码

大概思路 找到相同的section并写到1中,并在2中删除
最后没有重复,将两个文件合并
发表于 6 天前 来自手机 | 显示全部楼层
重复的是直接覆盖,读体积小的往多的里面写就行
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2019-1-19 03:40 , Processed in 0.089056 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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