(已解决)用循环语句读取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循环怎么写?? 不需要循环吧?修改下ini配置文件的格式就可以了。 回复 2# 水木子
谢谢老大帮忙,我想用循环来做,这样程序看着精练一些。。。程序是要给别人用的,我也不知道别人会加几个共享服务器。。。 本帖最后由 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差不多就是这个意思,未经验证 如果一定不想修改INI文件结构的话可以正则获取 谢谢大家的帮助,问题已经解决,谢谢
页:
[1]