karlpopper 发表于 2010-5-17 09:21:03

路径A:\BBB\CCC.EXE 如何直接截取到A:\BBB这个路径呢

CCC.EXE不定长 以斜线分割

l4ever 发表于 2010-5-17 12:30:43

StringSplit

caodongchun 发表于 2010-5-17 22:43:42

正则是最好的方法:
MsgBox(96,'',StringRegExpReplace('A:\BBB\CCC.EXE','\\[^\\]*$', ''))

caodongchun 发表于 2010-5-17 23:01:32

推荐你看看这个文章:
http://deerchao.net/tutorials/regex/regex.htm
我把这个文件存到了本地,又将其纳入了我的“源码集装箱”,查询起来很是方便
当然,我要修改我的filetype.ini文件,让程序可以接纳htm文档了!

3mile 发表于 2010-5-17 23:22:55

貌似用_PathSplit对深层目录更直观

lchl0588 发表于 2010-5-18 12:16:22

突发的想法:能否用“FileGetShortcut "结合其它函数来获取?

lynfr8 发表于 2010-5-18 19:37:46

突发的想法:能否用“FileGetShortcut "结合其它函数来获取?
lchl0588 发表于 2010-5-18 12:16 http://www.autoitx.com/images/common/back.gif$details = FileGetShortcut(@DesktopDir & "\1.lnk")
MsgBox(0, "工作目录:", $details)但意义不大,难道所有文件都创建快捷方式??

caodongchun 发表于 2010-5-18 22:38:46

_PathSplit这个函数其实蛮复杂的,很多行

caodongchun 发表于 2010-5-18 22:39:11

_PathSplit这个函数其实蛮复杂的,很多行

netegg 发表于 2010-5-18 23:00:28

#Include <WinAPIEx.au3>
_WinAPI_PathFindNextComponent( $sPath )

yhxhappy 发表于 2010-5-18 23:26:18

看了三楼的回复,觉得还是正则最好

正则我不熟,下面是我常用的方法,呵,有些笨。

$PATH = "A:\BBB\CCC.EXE"

$array = StringSplit($PATH, "\")

$PATH2 = ""
For $i = 1 To $array - 1
        $PATH2 = $PATH2 & $array[$i] & "\"
Next

MsgBox(0, "", $PATH2)

foboy 发表于 2010-5-19 11:43:43

本帖最后由 foboy 于 2010-5-19 11:45 编辑

StringLeft("A:\BBB\CCC.EXE", StringInStr("A:\BBB\CCC.EXE", "\", 0, -1))
这个表达式返回A:\BBB\
大概意思就是从右侧开始查找第一个"\"在字符串中的位置,然后从字符串中截取从第一个字符到这个位置的部分,如果不要最后面的\, StringLeft("A:\BBB\CCC.EXE", StringInStr("A:\BBB\CCC.EXE", "\", 0, -1)-1)
即可。
关键是StringInStr这个函数,有个参数可以控制从右侧开始查找,详情见帮助文件。
页: [1]
查看完整版本: 路径A:\BBB\CCC.EXE 如何直接截取到A:\BBB这个路径呢