如何读取上级目录名?
如何读取上级目录名?不需要完整路径! 本帖最后由 user3000 于 2012-6-7 19:03 编辑回复 1# qq4045728
好像很多人感兴趣了的样子, 增加点检测非法路径的
是这个意思吗?
$a = 'D:\AutoIt3SVN\Examples\GUI\Advanced\'
$aa='D:\AutoIt3SVN\Include'
$a = _Get_Parent_directory($a)
$aa = _Get_Parent_directory($aa)
MsgBox(0, $a, $aa)
Func _Get_Parent_directory($dir)
If Not StringRegExp($dir, '^:\\[^\\]+') Then Return SetError(1, 0, '给出的路径不合法!')
Return StringRegExpReplace($dir, '.+\\([^\\]+)\\[^\\]+\\?$', '\1')
EndFunc #include <file.au3>
#include <array.au3>
Dim $szDrive, $szDir, $szFName, $szExt
$TestPath = _PathSplit(@ScriptFullPath, $szDrive, $szDir, $szFName, $szExt)
$Spath = StringTrimRight($TestPath & $TestPath, 1)
$tag = StringSplit($Spath, "\\")
If @error = 1 Then
MsgBox(0, "警告", "当前已为根目录 " & $Spath)
Exit
EndIf
$SecondPath = StringTrimRight($Spath, StringLen($tag[$tag]))
MsgBox(0, "上一级目录", $SecondPath) 本帖最后由 netegg 于 2012-6-7 09:27 编辑
MsgBox(0, 0, $path & @CRLF & Stringleft($path, StringInStr($path, '\', 0, -1 - StringInStr(StringRight($path, 1), '\')) -1)) 进来膜拜楼上几位大牛!! 回复 4# netegg
瞧这思路,不佩服不行。学习了。 本帖最后由 shqf 于 2012-6-7 09:34 编辑
蛮有意思的一题,学正则不久,也用正则试一下:
$path='D:\AutoIt3SVN\Examples\GUI\Advanced'
;$path = 'D:\'
$pPath = StringRegExp($path, "\\([^\\]+)\\[^\\]+\\*$", 3)
If @error Then
MsgBox(0, 0, StringLeft($path,3))
Else
MsgBox(0, 0, $pPath)
EndIf细看,基本同一楼了。唉,思路展不开。 方法都不错。学习。 本帖最后由 kevinch 于 2012-6-7 09:59 编辑
$str="D:\personal documents\WebInfo.txt"
$arr=StringSplit($str,"\")
MsgBox(0,"",$arr[$arr-1])依路径分隔符stringsplit后倒数第二个就可以了 楼上的思路不错啊,不过如果是“'D:\AutoIt3SVN\Examples\GUI\Advanced\”的情况要出错。斗胆插一句$str=StringTrimRight($str,1)在第2 行如何?。 $str="D:\AutoIt3SVN\Examples\GUI\Advanced\"
If StringRight($str,1)=="\" Then $str=StringLeft($str,StringLen($str)-1)
If StringInStr($str,"\")>0 then
$arr=StringSplit($str,"\")
MsgBox(0,"",$arr[$arr-1])
Else
MsgBox(0,"","只有一层目录啦!")
EndIf提供个思路,你还非得逼我完善 哈哈。非常感谢各位仁兄! 哈哈。非常感谢各位仁兄! 本帖最后由 netegg 于 2012-6-7 18:11 编辑
惭愧,是上级目录不是路径呀
local $path = 'c:\1\2'
if stringright($path, 1) = '\' then $path = stringtrimright($path, 1)
msgbox(0,0,stringmid($path, stringinstr($path, '\', 0, -2)+1, stringinstr($path, '\', 0, -1)- StringInStr($path, '\', 0, -2)-1)) 惭愧,是上级目录不是路径呀
netegg 发表于 2012-6-7 17:49 http://www.autoitx.com/images/common/back.gif
老兄,不知道我这样写行不行?Local $a=StringSplit("c:\1\2\3","\")
MsgBox(0,"路径",$a)
页:
[1]
2