找回密码
 加入
搜索
查看: 3894|回复: 5

[AU3基础] (已解决)用循环语句读取ini配置的问题?

  [复制链接]
发表于 2010-11-30 18:57:55 | 显示全部楼层 |阅读模式
本帖最后由 boy007zz 于 2010-12-1 10:17 编辑

我的代码是这样的:
#Include <File.au3>
Dim $A,$B
While()
$ServerIP = IniRead(".\config.ini","Drive","IP[i]","NotFound")
$ServerPath = Iniread(".\config.ini","Drive","disk1","NotFound")
$UserName   = Iniread(".\config.ini","Drive","user1","NotFound") 
$UserPass   = Iniread(".\config.ini","Drive","pass1","NotFound")
$PatchName = IniRead(".\config.ini","Drive","name1","NotFound")
$DriveName = IniRead(".\config.ini","Drive","drive1","NotFound")
$C=IniRead(".\config.ini","Drive","REGKEY","NotFound")
$D=IniRead(".\config.ini","Drive","KEYNAME","NotFound")
If $ServerIP <> "" Then
    $A=DriveMapAdd($DriveName&":","\"&$ServerIP&""&$ServerPath, 0, $PatchName&""&$UserName, $UserPass)
        If $A=1 Then 
                RegWrite($C,$D,"REG_SZ","0") ; 若成功,创建键值为0
                _FileWriteLog("." & "\Drive Map.log","创建映射盘符成功")
                ;MsgBox(4096, "CG", $A, 10)
        Else  
                RegWrite($C,$D,"REG_SZ","1")
                _FileWriteLog("." & "\Drive Map.log","创建映射盘符失败")
                ;MsgBox(4096, "sb", $A, 10)
        EndIf
Else
        RegWrite($C,$D,"REG_SZ","1")
        _FileWriteLog("." & "\Drive Map.log","创建映射盘符失败")
        Exit
EndIf
配置文件:
[Drive]
IP1=192.168.11.1                         
disk1=d$                                    
user1=administrator                            
pass1=123456                                    
name1=                                            
drive1=z
REGKEY=HKEY_LOCAL_MACHINE\SOFTWARE\Test
KEYNAME=MAPTEST

IP2=192.168.11.2                           
disk2=d$\abc                                    
user2=administrator                            
pass2=a1234                                    
name2=                                            
drive2=y
REGKEY=HKEY_LOCAL_MACHINE\SOFTWARE\Test
KEYNAME=MAPTEST                        
。。。
IP3。。。。
IP4。。。。
IP5。。。。
。。。。   
我是新手,用AUTOIT写了一个自动做映射盘符的小工具,现在程序已经正常运行。但在配置文件读取遇到一点小问题,我想写一个while循环,读取ini文件中的IP等关键字的值,可不知道while的循环条件该如何写,麻烦大家帮帮忙,谢谢。
我的ini文件中,IP.disk,user,name,drive是一组配置文件,可根据需要配置多组,while循环怎么写??

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-11-30 19:05:28 | 显示全部楼层
不需要循环吧?修改下ini配置文件的格式就可以了。
 楼主| 发表于 2010-11-30 19:08:42 | 显示全部楼层
回复 2# 水木子


    谢谢老大帮忙,我想用循环来做,这样程序看着精练一些。。。程序是要给别人用的,我也不知道别人会加几个共享服务器。。。
发表于 2010-11-30 21:38:54 | 显示全部楼层
本帖最后由 yhxhappy 于 2010-11-30 21:46 编辑

楼主可以不要循环啊,把INI文件的格式下面这种也行啊
[1]
IP=192.168.11.1                        
disk=d$                                    
user=administrator                           
pass=123456                                    
name=                                            
drive=z
REGKEY=HKEY_LOCAL_MACHINE\SOFTWARE\Test
KEYNAME=MAPTEST

[2]
IP=192.168.11.2                           
disk=d$\abc                                    
user=administrator                           
pass=a1234                                    
name=                                            
drive=y
REGKEY=HKEY_LOCAL_MACHINE\SOFTWARE\Test
KEYNAME=MAPTEST

如果非要循环也不是不可以
#Include <File.au3>
Dim $A,$B, $i = 1

While()
        $ServerIP = IniRead(".\config.ini","Drive","IP" & $i,"NotFound")
        $ServerPath = Iniread(".\config.ini","Drive","disk" & $i,"NotFound")
        $UserName = Iniread(".\config.ini","Drive","user" & $i,"NotFound") 
        $UserPass = Iniread(".\config.ini","Drive","pass" & $i,"NotFound")
        $PatchName = IniRead(".\config.ini","Drive","name" & $i,"NotFound")
        $DriveName = IniRead(".\config.ini","Drive","drive" & $i,"NotFound")
        $C=IniRead(".\config.ini","Drive","REGKEY","NotFound")
        $D=IniRead(".\config.ini","Drive","KEYNAME","NotFound")
        If $ServerIP = "NotFound" Then
                RegWrite($C,$D,"REG_SZ","1")
                _FileWriteLog("." & "\Drive Map.log","创建映射盘符失败")
                ExitLoop
        Else                
                $A=DriveMapAdd($DriveName&":","\"&$ServerIP&""&$ServerPath, 0, $PatchName&""&$UserName, $UserPass)
                If $A=1 Then 
                        RegWrite($C,$D,"REG_SZ","0") ; 若成功,创建键值为0
                        _FileWriteLog("." & "\Drive Map.log","创建映射盘符成功")
                        ;MsgBox(4096, "CG", $A, 10)
                Else  
                        RegWrite($C,$D,"REG_SZ","1")
                        _FileWriteLog("." & "\Drive Map.log","创建映射盘符失败")
                        ;MsgBox(4096, "sb", $A, 10)
                EndIf
        EndIf
        $i += 1
WEnd
差不多就是这个意思,未经验证

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-12-1 09:14:19 | 显示全部楼层
如果一定不想修改INI文件结构的话可以正则获取
 楼主| 发表于 2010-12-1 10:17:13 | 显示全部楼层
谢谢大家的帮助,问题已经解决,谢谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 08:10 , Processed in 0.086834 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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