找回密码
 加入
搜索
查看: 4392|回复: 16

自己研究的如何在文本中读取指定行的内容(自动安装的配置文件)

[复制链接]
发表于 2009-5-26 18:07:06 | 显示全部楼层 |阅读模式
本帖最后由 zyx870615 于 2009-5-26 18:08 编辑

前几天我的MM想让我给她做个批量安装软件的东东,于是拿出自己很久没用的AutoIT来,做了几个,但是发现了个问题,就是MM要求不同的软

件要安在不同的目录里,开始想把目录直接集成在脚本里,转念一想,这可不行,要是我的MM过几天不想安在这个目录里了,想安在别的目录

,那我不是傻眼了吗,重头再来?不,这可不是俺的性格,一劳永逸才是我的本质啊,呵呵。于是就产生了一个想法,将目录配置放到一个配

置文件里,想改目录的话直接改个文本文件就OK了,呵呵。

我将配置文件设置为 programelist.dat  ,它其实就是个文本文件,输入以下内容:
[firefox]
C:\Programe Files\Firefox\
[opera]
C:\Programe Files\Opera\
[pplive]
C:\Programe Files\PPlive\
[winrar]
C:\Program Files\WinRAR\

当然了,只是一部分,还可以输入法很多很多。

这样之后又产生了一个问题,就是如何在AutoIT里面读出来这些配置并且把它输入到程序安装时的目录里面呢,上网查,有人是通过 先调入整

个文本 可这样的话,如果文件很大,速度必然要受到影响,也有通过#include<file.au3> 的,可是查看一下AutoIT安装目录里的file.au3后

我就崩溃了,这是啥嘛,比前一个方法还麻烦,就一简单的东东,难道真的要这么复杂吗,最后,想啊想,就是想不到,睡觉,不做了!可就

在我躺着胡思乱想时突然一个念头跳了出来:对啊。可以这样嘛!以下是写的程序,将这个功能定义为一个函数,以后就可以直接使用了,也

便于复杂和移植。呵呵。
Func progamelist($filename)   ;定义函数
$filename="["&$filename&"]"   ;这是为了和配置文件里的格式保持一致.如  [firefox]
Local $file = FileOpen("programelist.dat", 0)  ;打开配置文件
If $file = -1 Then
    MsgBox(0, "RHT提醒你", "无法读取程序位置信息,请确认当前目录下是否有 programelist.dat文件。")  ;如果配置文件不存在,则返回

提示
    Exit
EndIf
Local $linesum=1 ;定义最大行数+1变量,因为这个变量不是最大行数,而是最大行数+1后的值,在下面就看 到了
While 1
        $programelist=FileReadLine($file, $linesum) ;读入配置文件的第$linesum行
        If @error = -1 Then ExitLoop  ;如果该行没有内容,也就是说到这行文件结束了,就退出循环.
        $linesum=$linesum+1  ;该行有内容,将行数加一,也就是继续读下一行.注意如果有4行的文件,则最后的$linesum的值的4+1=5.
        Wend
;MsgBox(0,"总共的配置文件行数",$linesum-1) ;这行纯粹为了测试,可以删除掉
For $line=1 To $linesum-1   ;这个循环是关键,它将决定我要得到的程序安装位置信息在哪一行.
  If($filename=FileReadLine($file, $line)) Then ;如果程序名称=该行内容.
    $programelist=FileReadLine($file, $line+1) ;则将该行下一行的内容赋给$programelist变量,也就是说得到程序位置信息.
  EndIf
Next
FileClose($file)  ;关闭文件
;MsgBox(0,"目录名",$programelist) ;跟上面一样,这行纯粹为了测试,可以删除掉
Return($programelist) ;返回程序安装位置信息
EndFunc

OK,大功告成了,这样只要用 progamelist("firefox") 就可以返回C:\Programe Files\Firefox\,呵呵,目的达到了.
如 用:
msgbox(0,"RHT提示","所要安装的程序的位置为:"&progamelist("firefox"))
就可以测试了,呵呵.

本人小菜,刚学,希望高手赐教...

评分

参与人数 2金钱 +10 收起 理由
23070205 + 5 不错,学习了一些。
lynfr8 + 5 原创内容,感谢你对论坛的支持;希望继续发 ...

查看全部评分

发表于 2009-5-26 20:08:52 | 显示全部楼层
相信那个MM一定很开心啦
学以致用
值得一赞
 楼主| 发表于 2009-5-27 20:11:52 | 显示全部楼层
2# lynfr8
呵呵,谢谢,那是那是,是俺最爱的MM哦.呵呵.
发表于 2009-5-28 23:11:52 | 显示全部楼层
爱情真伟大
发表于 2009-5-29 00:30:18 | 显示全部楼层
爱情的力量啊,赞个
发表于 2009-5-29 23:34:20 | 显示全部楼层
好羡慕啊
发表于 2009-5-30 17:16:04 | 显示全部楼层
抱得没人归
发表于 2009-6-1 18:57:23 | 显示全部楼层
谢谢分享~~~
发表于 2009-6-5 18:02:00 | 显示全部楼层
楼主那样的水平还自谦小菜,刚学就能处理此类问题,太有创造力了,羡慕楼主。
发表于 2009-6-19 15:13:41 | 显示全部楼层
谢谢楼主的分享,多方此类的东西供学习。
发表于 2009-6-19 20:57:41 | 显示全部楼层
还小菜呀???偶就是比小白还小白了,55555自己给自己加加油
发表于 2009-6-19 22:23:17 | 显示全部楼层
谢谢分享,
发表于 2009-6-24 10:42:38 | 显示全部楼层
楼主过谦了,解释的很详细,是我们学习的好贴
发表于 2009-6-25 11:17:50 | 显示全部楼层
厉害,学习学习。
发表于 2009-6-27 08:40:41 | 显示全部楼层
不错··不错!! 向高手学习!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-18 19:08 , Processed in 0.084837 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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