【已解决】路径与扩展名问题
本帖最后由 touch_xu 于 2010-12-30 09:42 编辑己知一个文件的完整路径〈不带引号〉,有什么函数可以快速从路径得到:
1 文件名
2 接展名
譬如c:\abc.txt
要的结果是
1 abc
2 txt ;$spath必须是一个确实的文件
;_getdir($spath) 给出文件路径但不包含文件名
;_getfilename($spath)给出文件名 $sflag=1时不包含文件类型
;_getfiletype($spath)给出文件类型
然后调用函数即可
;=======将以下文本"Filegetinfo.au3"文本复制到Include下=============
Func _getdir($spath)
If StringRegExp($spath, '\\') Then
$sdir = StringRegExpReplace($spath, '\\[^\\]*$', '')
Else
$sdir = ''
EndIf
Return ($sdir)
EndFunc ;==>_getdir
Func _getfilename($spath, $sflag = 0)
If $sflag = 0 Then
$sflag = 0
Else
$sflag = 1
EndIf
If $sflag = 0 Then
$sFileName = StringRegExpReplace($spath, '.+\\', '')
Else
$sFileName = StringRegExpReplace($spath, '.+\\', '')
$sFileName = StringRegExpReplace($sFileName, '\.[^\.]*$', '')
EndIf
Return ($sFileName)
EndFunc ;==>_getfilename
Func _getfiletype($spath)
$sFiletype = StringRegExpReplace($spath, '.+\.', '')
Return ($sFiletype)
EndFunc ;==>_getfiletype
;================================================ #Include <File.au3>
_PathSplit($szPath, ByRef $szDrive, ByRef $szDir, ByRef $szFName, ByRef $szExt)
$szPath
要拆分的路径The path to be split (Can contain a UNC server or drive letter)
$szDrive
驱动器字符串
$szDir
目录字符串
$szFName
文件名字符串
$szExt
扩展名字符串 该标记已解决吧呵呵 本帖最后由 netegg 于 2010-12-29 12:21 编辑
#Include <WinAPIEx.au3>
_WinAPI_PathFindFileName 文件名
_WinAPI_PathFindExtension 扩展名
_WinAPI_PathGetDriveNumber 驱动器
_WinAPI_PathGetArgs 参数(通常在命令行中使用) 呵呵,学习了 来个纯手工的
$FullPath = @ScriptFullPath
$FullPath = "\\192.168.0.108\tmp$\新建文件夹 (3)\Autoit_ACN\_____~~~T.au3"
$FullPath = "D:\192.168.0.108\tmp$\新建文件夹 (3)\Autoit_ACN\_____~~~T.au3"
ConsoleWrite("==============>"& $FullPath &@LF )
ConsoleWrite("==============>"& _fpGetName($FullPath, 1) &@LF )
ConsoleWrite("==============>"& _fpGetName($FullPath, 2) &@LF )
ConsoleWrite("==============>"& _fpGetName($FullPath, 3) &@LF )
ConsoleWrite("==============>"& _fpGetName($FullPath, 4) &@LF )
Func _fpGetName($string, $getname = 4) ; 1.drive / hostIP, 2.dir, 3.filename, 4.ext
If $getname = 1 Then
If StringInStr($string,":") = 2 Then
Return StringMid($string, 1, 1)
ElseIf StringInStr($string,"\\") = 1 Then
Return StringMid($string, 1, StringInStr($string, "\", 0, 1, 3) - 1 )
EndIf
ElseIf $getname = 2 Then
Return StringReplace( $String, StringMid( $string, StringInStr($string, "\", 0, -1), StringLen($string) ) , "" )
ElseIf $getname = 3 Then
Return StringReplace( StringMid( $string, StringInStr($string, "\", 0, -1)+1, StringLen($string) ) , StringRight( $string, StringLen($string) - StringLen(StringRegExpReplace($string, "\.\w+\Z", "", 1)) ), "" )
ElseIf $getname = 4 Then
Return StringRight( $string, StringLen($string) - StringLen(StringRegExpReplace($string, "\.\w+\Z", "", 1)) - 1 )
Else
Return ""
EndIf
EndFunc
$a="c:\abc.txt"
$exp=StringRegExp($a,'[^\.]+$',3)
MsgBox(0,0,$exp)
$fn=StringRegExp($a,'[^\\]+(?=\.[^\\]+$)',3)
MsgBox(0,0,$fn)
未判断文件命名的合法性 回复 8# pcbar
无后缀的能出来吗 多谢各位高手,学习了 谢谢!!学习了! 看起来好深奥,深,努力学习中 {:face (113):}看起来好深奥,深,努力学习中 路过@$$$$$$$$$
页:
[1]