本帖最后由 C.L 于 2010-3-31 21:26 编辑
回复 17# afan
哦,我再弄了个半成品,放上来测一下,现在短文件名如:a. ba. 少过三个字符的不支持,中文的不支持,其他的我这测试好象都没问题(或者再复杂的我没试过).afan有兴趣的也可以帮我改改.等下没空了,等有空再来试.$f = InputBox ("目录名" ,'目录名(目录名不要带"/"或""):')
If $f = "" And StringRight($f,1)<> "." Then Exit
RunWait(@ComSpec & ' /C Md "' & $f & '."', '', 0)
$Sn = getShutName ($f)
Run (@ComSpec &" /c dir /x & pause")
$y=MsgBox (4,$f&"的短文件名是",$Sn&@CRLF&"是否要删除畸形目录?")
If $y = 6 Then RunWait(@ComSpec & ' /C rd /q /s "' & $f & '."', '', 0)
If $y = 7 Then Exit
Func getShutName ($filename)
If StringLen($filename)<3 Then
MsgBox (0,"","你建的目录实在是太变态了,拒绝执行")
Exit
EndIf
$split = StringReplace ($filename,".","")
MsgBox (0,"",$split)
For $i=1 To 6
$fShutname = StringLeft($split,6) & "~"&$i
$filepath = @ScriptDir
If StringRight ($filepath,1) == "" Then $filepath = StringTrimRight ($filepath,1)
$ln = FileGetLongName ($fShutname,1)
MsgBox (0,"",$fShutname&@CRLF&$ln&@CRLF&$filepath&""&$filename)
If $ln == $filepath&""&$filename Then
Return ($fShutname)
EndIf
If $ln = $fShutname Then Return "没有获取短文件名"
NextEndFunc
刚才赶时间,弄得乱乱的,现在重新改了一下,除象a. ba. 少开三个字符的不能正常外,其他的象 "a.畸.", "test...eee..."这样的目录也能正确识别了,a. ba. 这样少于三个字符的没弄清楚这种算法,不知道是什么规律?有知道的能跟下贴就最好了。 |