boy007zz 发表于 2010-11-30 18:57:55

(已解决)用循环语句读取ini配置的问题?

本帖最后由 boy007zz 于 2010-12-1 10:17 编辑

我的代码是这样的:#Include <File.au3>
Dim $A,$B
While()
$ServerIP = IniRead(".\config.ini","Drive","IP","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配置文件:
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循环怎么写??

水木子 发表于 2010-11-30 19:05:28

不需要循环吧?修改下ini配置文件的格式就可以了。

boy007zz 发表于 2010-11-30 19:08:42

回复 2# 水木子


    谢谢老大帮忙,我想用循环来做,这样程序看着精练一些。。。程序是要给别人用的,我也不知道别人会加几个共享服务器。。。

yhxhappy 发表于 2010-11-30 21:38:54

本帖最后由 yhxhappy 于 2010-11-30 21:46 编辑

楼主可以不要循环啊,把INI文件的格式下面这种也行啊

IP=192.168.11.1                        
disk=d$                                    
user=administrator                           
pass=123456                                    
name=                                          
drive=z
REGKEY=HKEY_LOCAL_MACHINE\SOFTWARE\Test
KEYNAME=MAPTEST


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差不多就是这个意思,未经验证

3mile 发表于 2010-12-1 09:14:19

如果一定不想修改INI文件结构的话可以正则获取

boy007zz 发表于 2010-12-1 10:17:13

谢谢大家的帮助,问题已经解决,谢谢
页: [1]
查看完整版本: (已解决)用循环语句读取ini配置的问题?