zhhsh 发表于 2010-8-7 18:42:01

如何读取含有多个相同的字段名的非标准ini?[已解决]

本帖最后由 zhhsh 于 2010-8-8 12:09 编辑

如题

比如说XP安装光盘中DOSNET.INF,里面有几个相同的字段名,但读出来的字段名只有一个,请问如何做到?

附上DOSNET.INF供分析
d1,disk1,disk101
d2,ntdetect.com



d1,1394bus.sys


d1,dmboot.sys



d1,spcmdcon.sys


d1,ntldr




d1,c_1252.nls
d1,c_437.nls

d1,kbdus.dll

d1,vgaoem.fon
d1,l_intl.nls

xyold1 发表于 2010-8-7 19:05:04

当成文本文件读取不知可否

xyold1 发表于 2010-8-7 19:06:16

_FileReadToArray
--------------------------------------------------------------------------------

读取一个指定文件到一个数组.


#Include <File.au3>
_FileReadToArray($sFilePath, ByRef $aArray)

afan 发表于 2010-8-7 19:22:55

为什么要弄成一样的字段名呢…

水木子 发表于 2010-8-7 19:33:02

本帖最后由 水木子 于 2010-8-7 19:38 编辑

回复 4# afan
这也不能怪他,那是inf 驱动文件,就是这个样子的。

以前用正则帮鲜奶折腾过,不过我的正则太烂了,真想看看前辈精彩的正则。

zhhsh 发表于 2010-8-7 20:02:11

M$的东西实在太麻烦。。。

afan 发表于 2010-8-7 20:21:11

只能自编函数

zhhsh 发表于 2010-8-8 10:38:52

读ini中所有的字段名都行,
只剩下读字段名中数据

zhhsh 发表于 2010-8-8 10:42:49

不知循环读文件中的每一行行不行

afan 发表于 2010-8-8 10:49:00

回复afan
这也不能怪他,那是inf 驱动文件,就是这个样子的。

以前用正则帮鲜奶折腾过,不过我的正则 ...
水木子 发表于 2010-8-7 19:33 http://www.autoitx.com/images/common/back.gif


    用正则是肯定可以做到的,只不过貌似比较麻烦点…

afan 发表于 2010-8-8 11:12:19

本帖最后由 afan 于 2010-8-8 11:46 编辑

#include <Array.au3>

$a = _IniReadSection_line_all('DOSNET.INF', 'FloppyFiles.1')
_ArrayDisplay($a, 'FloppyFiles.1')
$a = _IniReadSection_line_all('DOSNET.INF', 'FloppyFiles.3')
_ArrayDisplay($a, 'FloppyFiles.3')

Func _IniReadSection_line_all($iFile, $Section)
        Local $s_File = FileRead($iFile), $line_all
        Local $s_Sec = StringRegExp($s_File, '(?s)(?i)(?:^|\n)\h*\[\h*' & $Section & '\h*\](.+?)(?=\r\n\h*\[|$)', 3)
        If @error Then Return SetError(1, 0, 0)
        For $i = 0 To UBound($s_Sec) - 1
                $line_all &= $s_Sec[$i]
        Next
        Local $s_line = StringRegExp($line_all, '\n\h*([^;\s].*?)\h*(?=\r?\n|$)', 3)
        Return $s_line
EndFunc   ;==>_IniReadSection_line_all

zhhsh 发表于 2010-8-8 12:08:22

超版的正则表达式真牛,谢谢
问题解决了。

zhhsh 发表于 2010-8-8 12:10:26

超版您也有必要更新一下您的_ini.au3 UDF库

afan 发表于 2010-8-8 12:13:26

回复 13# zhhsh


    谢谢提醒~ 如果有此需要我会抽空更新一下。如果有对此函数的要求也可提出,使之更完善~

lqylbh 发表于 2010-12-3 00:44:58

日后慢慢研究研究
页: [1]
查看完整版本: 如何读取含有多个相同的字段名的非标准ini?[已解决]