smooth 发表于 2014-3-4 18:08:34

[已解决]请教如何从一个文件的路径中截取不含文件名的路径?

本帖最后由 smooth 于 2014-3-25 11:39 编辑

请教如何从一个文件的路径中截取不含文件名的路径?比如:C:\yonyou\home\starter.jar,要获取C:\yonyou\home,我记得有一个_WinApi_Paht****什么函数可以做到,但是现在怎么也找不到了,只找到了从路径中截取文件名的函数:_WinAPI_PathFindFileName。谢谢!

user3000 发表于 2014-3-4 18:15:33

我看到过的此类”处理文件路径“的提问帖不下十个了吧?
有时候搜索一下,也许会更迅速的得到自己问题的答案。Local $sPath = 'C:\yonyou\home\starter.jar'
MsgBox(0, '', StringRegExpReplace($sPath, '\\[^\\]+, ''))

lpxx 发表于 2014-3-4 18:32:54

正则的话
#include <Array.au3>
Local $Str = 'C:\yonyou\home\starter.jar'
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExp($str, '^(.*)\\(.*)$', 3, 1)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($Test), '其中元素为: ' & $Test)
_ArrayDisplay($Test, UBound($Test))

smooth 发表于 2014-3-4 19:55:05

回复 2# user3000

回复 3# lpxx
都不是你们说的,是一个_WinApi_Path****的UDF函数。

afan 发表于 2014-3-4 20:12:22

_WinAPI_PathRemoveFileSpec

smooth 发表于 2014-3-4 22:20:04

回复 5# afan

谢谢!好像是这个。不过二楼给出的正则,实现起来貌似更简洁。不过他写的不对。

afan 发表于 2014-3-4 22:27:20

回复afan

谢谢!好像是这个。不过二楼给出的正则,实现起来貌似更简洁。不过他写的不对。
smooth 发表于 2014-3-4 22:20 http://www.autoitx.com/images/common/back.gif


    这个一般就正则了,你硬要就给你找了…Local $sPath = 'C:\yonyou\home\starter.jar'
MsgBox(0, '', StringRegExpReplace($sPath, '\\+[^\\]*$', ''))

不死帝国 发表于 2014-3-5 09:29:39

为什么不直接使用官方提供的头文件 File.au3

_PathSplit
拆分完整路径为驱动器, 目录, 文件名和扩展名. 缺少部分由空字符串代替.


#include <File.au3>
_PathSplit ( $sFilePath, ByRef $sDrive, ByRef $sDir, ByRef $sFileName, ByRef $sExtension )

smooth 发表于 2014-3-5 20:53:45

本帖最后由 smooth 于 2014-3-5 21:04 编辑

回复 7# afan

好强!A大,哪里可以找到详细的学习资料,我在百度搜索到的,都不怎么系统。这样以后就可以少来劳烦你了。

netegg 发表于 2014-3-7 12:23:59

回复 10# smooth

那就msdn里

zhenglei 发表于 2015-1-24 04:03:12

为什么不直接使用官方提供的头文件 File.au3

_PathSplit
拆分完整路径为驱动器, 目录, 文件名和扩展名. ...
不死帝国 发表于 2014-3-5 09:29 http://www.autoitx.com/images/common/back.gif


这招最强大
页: [1]
查看完整版本: [已解决]请教如何从一个文件的路径中截取不含文件名的路径?