afan 发表于 2010-6-30 17:32:32

要用正则也行,而且可以一个For都不用$Str = _
                '' & @CRLF & _
                'VOD|MOV1: MP3=2 GB D:\文件' & @CRLF & _
                'VOD|MOV2: RM=512 MB D:\文件' & @CRLF & _
                'VOD|MOV3: AVI=1 GB D:\文件' & @CRLF & _
                'VOD|MOV4: MKV=256 MB D:\文件' & @CRLF & _
                '' & @CRLF & _
                'Disk|Disk Drive1=982 GB (C;D)' & @CRLF & _
                'Disk|Disk Drive2=238 GB (E;F)' & @CRLF & _
                '' & @CRLF & _
                'Partition1=C: (NTFS) 29996 MB free 10168 MB' & @CRLF & _
                'Partition2=D: (NTFS) 948992 MB free 248108 MB' & @CRLF & _
                'Partition3=E: (NTFS) 199987 MB free 48776 MB' & @CRLF & _
                'Partition4=F: (NTFS) 37869 MB free 19953 MB' & @CRLF

$str0 = StringRegExpReplace($str, '(?s).+?MOV.\:\h(.+?\h\w+)\h.+?|.+$', '$1;')
Msgbox(0, 'MOV', 'MOV=' & StringTrimRight($str0, 1))

$str1 = StringRegExpReplace($str, '(?s).+?Drive\d\=(\d+\h\w+).+?|.+$', '$1;')
Msgbox(0, 'Disk', 'Disk=' & StringTrimRight($str1, 1))

$str2 = StringRegExpReplace($str, '(?s).+?free\h(\d+\hMB).+?|.+$', '$1;')
Msgbox(0, 'Partition', 'Partition=' & StringTrimRight($str2, 1))

minbiao 发表于 2010-6-30 17:42:55

本帖最后由 minbiao 于 2010-6-30 17:47 编辑

我明白afan大大的意思,但是如果这样怎么能完成批量处理!? 而且ini中的值都是不一样的!

搞不明白的就是这个      Local $sResult = ''

      For $j = 0 To UBound($aReg) - 2 Step 2

                $sResult &= $aReg[$j] & $aReg[$j + 1] & ';'我写的时候都是用                   For $ii = 0 To UBound($aReg) - 1

                            $sResult &= $aReg[$ii] & ';'应该3个For能够完成,但是就是出现问题

afan 发表于 2010-6-30 17:44:30

这只是方便例子使用……
实际将 $Str = FileRead('xxx.ini')

minbiao 发表于 2010-6-30 17:47:30

本帖最后由 minbiao 于 2010-6-30 20:29 编辑

好的! 试一下!

-----------------------------------------------

OK了! 再再再再再再再再次感谢afan大大! 辛苦了!
页: 1 [2]
查看完整版本: 如何读取INI其中的数值,列出结果,用;隔开