找回密码
 加入
搜索
查看: 12405|回复: 26

[效率算法] oeminfo.ini 新添尾行问题

 火.. [复制链接]
发表于 2011-10-19 21:42:10 | 显示全部楼层 |阅读模式
本帖最后由 suntech 于 2011-10-20 15:26 编辑

主要是要获取 C:\WINDOWS\system32\oeminfo.ini  提取[Support Information]下最后的Line的编号
Line是不固定的,可能10或20或其他数字。

这段内容格式如下:
Line1=本系统仅用于研究与测试Windows系统安装盘结构和安装技术。
Line2=
Line3=专业的技术,虔诚为您服务!
Line4=----------------------------------------
Line5=
Line6=官方网站
Line7=----------------------------------------
Line8=
Line9=
Line.....  不确定行数,但都是前行 +1下来的

要实现最有效的方法读取 C:\WINDOWS\system32\oeminfo.ini  并获取最后的Line 编号(例如 BH=15),新添加一个比编号多一的行(如 Line16)
发表于 2011-10-19 22:20:37 | 显示全部楼层
Local $Str = _
                'Line1=' & @CRLF & _
                '...' & @CRLF & _
                'Line14=' & @CRLF & _
                'Line15=' & @CRLF
Local $Test = StringRegExp($str, '(\d+)=', 3)
If Not @Error Then MsgBox(0, '最后数字', $Test[UBound($Test) - 1])
发表于 2011-10-19 22:24:36 | 显示全部楼层

#include <file.au3>
$lines=_FileContLines("file path")
MsgBox("","total lines"&$lines,$lines+1)


do not just copy
 楼主| 发表于 2011-10-19 22:41:13 | 显示全部楼层
主要是要获取 C:\WINDOWS\system32\oeminfo.ini  提取[Support Information]下最后的Line的编号
Line是不固定的,可能10或20或其他数字
发表于 2011-10-19 23:00:18 | 显示全部楼层
本帖最后由 gzh888666 于 2011-10-20 00:05 编辑
主要是要获取 C:\WINDOWS\system32\oeminfo.ini  提取[Support Information]下最后的Line的编号
Line是不固 ...
suntech 发表于 2011-10-19 22:41
### 友情提示:本脚本由 Au3.REHelper 于 2011/10/19 23:18 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $Str = _
                'Line1=本系统仅用于研究与测试Windows系统安装盘结构和安装技术。' & @CRLF & _
                'Line2=' & @CRLF & _
                'Line3=专业的技术,虔诚为您服务!' & @CRLF & _
                'Line4=----------------------------------------' & @CRLF & _
                'Line5=' & @CRLF & _
                'Line6=官方网站' & @CRLF & _
                'Line7=----------------------------------------' & @CRLF & _
                'Line8=' & @CRLF & _
                'Line9=' & @CRLF & _
                'Line10='
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExp($str, '(?s)(?i)line(\d+?)=.*$', 1)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($Test), '其中[0]元素为: ' & $Test[0])
发表于 2011-10-19 23:38:45 | 显示全部楼层
本帖最后由 lixiaolong 于 2011-10-19 23:40 编辑

回复 4# suntech
Local $Str = _
                '[General]' & @CRLF & _
                'Manufacturer=fee' & @CRLF & _
                'Model=eef' & @CRLF & @CRLF & _
                '[Support Information]' & @CRLF & _
                'Line1=' & @CRLF & _
                'Line2=aaaa' & @CRLF & _
                'Line3=bbbb' & @CRLF & _
                'Line4=' & @CRLF & _
                'Line5=' & @CRLF & _
                'Line55=' & @CRLF & _
                'Line33='
MsgBox(0, '', $Str)
Local $Test = StringRegExp($str, '(?s)(?i)\[Support Information\].+(line\d*)=.*$', 3)
If Not @Error Then MsgBox(0, 'Line',$Test[0])
Local $Test = StringRegExp($str, '(?s)(?i)\[Support Information\].+line(\d*)=.*$', 3)
If Not @Error Then MsgBox(0, 'Line',$Test[0])

评分

参与人数 1金钱 +10 收起 理由
gzh888666 + 10 小龙出手就是不凡,我那个是错的!初学正则 ...

查看全部评分

发表于 2011-10-20 06:45:05 | 显示全部楼层
fileopen('oeminfo.ini', 1)?
 楼主| 发表于 2011-10-20 15:29:33 | 显示全部楼层
回复 7# netegg


Fileopen 是最后做的事,现在要做的就是获取最后的Line的编号BH,Fileopen加入编号+1的Line(BH+1)的一行
发表于 2011-10-20 15:42:17 | 显示全部楼层
回复 8# suntech
参数1就是接着写啊,管你原来有多少行
发表于 2011-10-20 15:46:50 | 显示全部楼层
早贴出比较完整的ini文件可能大家早就帮你解决了。
几个人都贴出了代码,LZ应该积极测试及反馈,那样也早就解决了。
 楼主| 发表于 2011-10-20 15:51:45 | 显示全部楼层
回复 9# netegg


    但Line  的编号一定是前一行加1   如果跳行了在我的电脑属性里头是不会显示的
 楼主| 发表于 2011-10-20 15:57:37 | 显示全部楼层
回复 10# afan


    大佬好,主要是要获取 C:\WINDOWS\system32\oeminfo.ini  提取[Support Information]下最后的Line的编号,不是Array 固定的内容。
发表于 2011-10-20 16:00:09 | 显示全部楼层
回复 12# suntech


    我这根本没这字段。
你应该截取部分可以用来测试的
发表于 2011-10-20 16:02:12 | 显示全部楼层
且要说明是否还有别的字段含有Line*关键字
 楼主| 发表于 2011-10-20 16:12:55 | 显示全部楼层
回复 14# afan



这是一个例子,Line 可能10或20或更多,也就是要获取到最后LineX 的编号。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-14 00:31 , Processed in 0.089774 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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