本帖最后由 chenronting 于 2010-10-22 23:14 编辑
下面帖上源码。还有Afan前辈的UDF 。
我是在D盘新建一个畸形文件夹。再用Afan的UDF来获取
也用过 FileGetshortName 猎取
回值都为0
望大家有空帮我看看
还有, 我用dircreate建立的其中一个文件夹用CMD重设属性(ARSH)
都无法成功,提示:无法更改属性 —
就这么一个前次建立起来的文件夹有问题。
以前试过用AU3的 filesetattrib 可以改
现在这个文件夹没试, 想把它留下。研究
在Afan的帮助下, 已经解决了。答案在33#$_weizi = 'D:\'
$_filename = '爱什么是什么........'
DirCreate($_weizi & $_filename & './')
$_duan8 = _FileGetShortName($_weizi & $_filename)
MsgBox(0, '', $_duan8)
Func _FileGetShortName($FilePath, $Flag = 1)
$FilePath = StringRegExpReplace($FilePath, '\\+, '')
If $Flag <> 1 Then $Flag = 0
If FileExists($FilePath) And Not StringRegExp($FilePath, '\.+) Then
If $Flag = 1 Then Return FileGetShortName($FilePath, 1)
Return StringRegExpReplace(FileGetShortName($FilePath, 1), '.+\\', '')
EndIf
Local $Path, $File
If StringInStr($FilePath, ':') Then
$Path = StringRegExpReplace($FilePath, '\\[^\\]+, '')
$File = StringRegExpReplace($FilePath, '.+\\', '')
Else
$Path = @ScriptDir
If StringInStr($FilePath, '\') Then $Path &= '\' & StringRegExpReplace($FilePath, '\\[^\\]+, '')
$File = StringRegExpReplace($FilePath, '.+\\', '')
EndIf
$File = StringRegExpReplace($File, '(\.|\+|\(|\)|\{|\}|\[|\]|\^|\$)', '\\$1')
Local $str = '', $too
$too = Run(@ComSpec & ' /c dir /A /x "' & $Path & '"', '', 0, 2)
While 1
Sleep(1)
$str &= StdoutRead($too)
If @error Then ExitLoop
WEnd
If Not StringRegExp($str, '<DIR>.+\s' & $File & '\r') Then Return SetError(1, 0, 0)
Local $ShortName = StringRegExpReplace($str, '(?s).+<DIR>\s+?([^\s]+)\s+?' & $File & '.+', '$1')
If @extended = 0 Then Return SetError(1, 0, 0)
If $Flag = 1 Then Return FileGetShortName($Path, 1) & '\' & $ShortName
Return $ShortName
EndFunc ;==>_FileGetShortName
|