|
本帖最后由 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"))
就可以测试了,呵呵.
本人小菜,刚学,希望高手赐教... |
评分
-
查看全部评分
|