fastrun 发表于 2011-8-12 22:25:39

回复飘云


    我想到一个方法,其实可以把路径当作字符串来对待,验证字符串中是否包含有“\”来判 ...
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                       
---------------------------------------------------------------------------------------

xwt620 发表于 2011-8-12 23:07:17

想了几天了,没有一个好方法,不知道正则解决这个问题是不是会简单点

user3000 发表于 2011-8-13 02:44:45

如果你能把这几天时间花到学正规上,我相信你在正规已经入门了!
相信我,别看正规看起来是似乎很费劲,其实学一点它的基础运用是很容易的!

但是,像你上面的代码,不用正则也可以简化的: 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,至少你上面的代码,
如果在我机器上运行,肯定会报错的!

user3000 发表于 2011-8-13 03:00:43

如果你想验证一串字符是否符合WINDOWS文件夹命名要求
可用下面的正则进行简单验证:
If StringRegExp ($Str,'[^\w]',0) Then 
MsgBox(64, "提示:", "你输入的文件名夹不可用!")
Else
MsgBox(64, "提示:", "你输入的文件夹名可用!")
Endif

上面正则是验证输入的变量是否存在字母、数字或下划线以外的字符。
如果你还想加上“- .”等符合要求的特殊字符,可以在“\w”后加上“\.\-”等等。

xwt620 发表于 2011-8-15 21:53:59

感觉在这个问题上纠结不清,还不如用FileSaveDialog ()简单。
页: 1 [2]
查看完整版本: 在inut里写一个文件路径,如何判断是有效的文件路径[已解决]