找回密码
 加入
搜索
查看: 6569|回复: 12

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

 火.. [复制链接]
发表于 2014-3-4 18:08:34 | 显示全部楼层 |阅读模式
本帖最后由 smooth 于 2014-3-25 11:39 编辑

请教如何从一个文件的路径中截取不含文件名的路径?比如:C:\yonyou\home\starter.jar,要获取C:\yonyou\home,我记得有一个_WinApi_Paht****什么函数可以做到,但是现在怎么也找不到了,只找到了从路径中截取文件名的函数:_WinAPI_PathFindFileName。谢谢!
发表于 2014-3-4 18:15:33 | 显示全部楼层
我看到过的此类”处理文件路径“的提问帖不下十个了吧?
有时候搜索一下,也许会更迅速的得到自己问题的答案。
Local $sPath = 'C:\yonyou\home\starter.jar'
MsgBox(0, '', StringRegExpReplace($sPath, '\\[^\\]+, ''))
发表于 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), '其中[0]元素为: ' & $Test[0])
_ArrayDisplay($Test, UBound($Test))
 楼主| 发表于 2014-3-4 19:55:05 | 显示全部楼层
回复 2# user3000

回复 3# lpxx
都不是你们说的,是一个_WinApi_Path****的UDF函数。
发表于 2014-3-4 20:12:22 | 显示全部楼层
_WinAPI_PathRemoveFileSpec
 楼主| 发表于 2014-3-4 22:20:04 | 显示全部楼层
回复 5# afan

谢谢!好像是这个。不过二楼给出的正则,实现起来貌似更简洁。不过他写的不对。
发表于 2014-3-4 22:27:20 | 显示全部楼层
回复  afan

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



    这个一般就正则了,你硬要就给你找了…
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 )
 楼主| 发表于 2014-3-5 20:53:45 | 显示全部楼层
本帖最后由 smooth 于 2014-3-5 21:04 编辑

回复 7# afan

好强!A大,哪里可以找到详细的学习资料,我在百度搜索到的,都不怎么系统。这样以后就可以少来劳烦你了。
发表于 2014-3-7 12:23:59 | 显示全部楼层
回复 10# smooth

那就msdn里
发表于 2015-1-24 04:03:12 | 显示全部楼层
为什么不直接使用官方提供的头文件 File.au3

_PathSplit
拆分完整路径为驱动器, 目录, 文件名和扩展名. ...
不死帝国 发表于 2014-3-5 09:29



这招最强大
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 16:01 , Processed in 0.076476 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表