我想到一个方法,其实可以把路径当作字符串来对待,验证字符串中是否包含有“\”来判 ...
xwt620 发表于 2011-8-8 22:31 http://www.autoitx.com/images/common/back.gif
以“\”把路径划分成组数,读取最后一行字符串,再返回字符串(文件夹或文件)是否存在。
fuldho 发表于 2011-8-12 18:20 http://www.autoitx.com/images/common/back.gif
不行。如果是根目录,比如D:,后面是没有“\”的,所以还要区分一下。
提供一下我原来写的一个程序的部分源代码,希望可以有所帮助。
-----------------------------------------------------------------------------
;定义RTX切换Tab分页中的相关函数;
Func rtxswitch()
Select
Case @GUI_CtrlId=$Button4
While 1
$rtxdir = FileSelectFolder("请选择RTX安装文件夹:", "")
If $rtxdir=''Then Return
Select
Case StringLen("$rtxdir")=3
IfFileGetAttrib($rtxdir)= "D" And FileExists($rtxdir&'RTX.exe') Then
GUICtrlSetData($Input1,$rtxdir)
ExitLoop
Else
MsgBox(64, "提示:", "你选择的RTX安装路径不正确,请重新选择!")
EndIf
Case StringLen("$rtxdir") > 3
IfFileGetAttrib($rtxdir)= "D" And FileExists($rtxdir&'\RTX.exe') Then
GUICtrlSetData($Input1,$rtxdir)
ExitLoop
Else
MsgBox(64, "提示:", "你选择的RTX安装路径不正确,请重新选择!")
EndIf
EndSelect
WEnd
--------------------------------------------------------------------------------------- 想了几天了,没有一个好方法,不知道正则解决这个问题是不是会简单点 如果你能把这几天时间花到学正规上,我相信你在正规已经入门了!
相信我,别看正规看起来是似乎很费劲,其实学一点它的基础运用是很容易的!
但是,像你上面的代码,不用正则也可以简化的: If StringInStr($rtxdir,"d:") Then
If FileExists($rtxdir&'RTX.exe') Or FileExists($rtxdir&'\RTX.exe') Then
GUICtrlSetData($Input1,$rtxdir)
Endif
Else
MsgBox(64, "提示:", "你选择的RTX安装路径不正确,请重新选择!")
EndIf 还有,我不知道你用的什么版本的AU3,至少你上面的代码,
如果在我机器上运行,肯定会报错的! 如果你想验证一串字符是否符合WINDOWS文件夹命名要求
可用下面的正则进行简单验证:
If StringRegExp ($Str,'[^\w]',0) Then
MsgBox(64, "提示:", "你输入的文件名夹不可用!")
Else
MsgBox(64, "提示:", "你输入的文件夹名可用!")
Endif
上面正则是验证输入的变量是否存在字母、数字或下划线以外的字符。
如果你还想加上“- .”等符合要求的特殊字符,可以在“\w”后加上“\.\-”等等。 感觉在这个问题上纠结不清,还不如用FileSaveDialog ()简单。
页:
1
[2]