C.L
发表于 2010-3-31 17:59:22
回复 15# afan
我这里显示是对的,不知?
用10楼的代码生成的testeee. 文件夹
afan
发表于 2010-3-31 18:02:45
本帖最后由 afan 于 2010-3-31 20:51 编辑
回复 16# C.L
而我这执行你的代码得出的却是:
C.L
发表于 2010-3-31 18:20:07
本帖最后由 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. 这样少于三个字符的没弄清楚这种算法,不知道是什么规律?有知道的能跟下贴就最好了。
afan
发表于 2010-3-31 18:21:29
回复 18# C.L
呵呵,谢谢~
afan
发表于 2010-3-31 20:45:07
1#已添加我写的代码附件。
afan
发表于 2010-3-31 20:49:29
我有时候在最后面加一个点。 也没能进去。 是什么原因呢。
这种文件夹是不是都只要加一个点就能进去了呢 ...
chenronting 发表于 2010-3-31 17:11 http://www.autoitx.com/images/common/back.gif
是的。如果上级目录也是畸形文件夹同样需要加.
C.L
发表于 2010-3-31 21:14:33
回复 21# afan
18#的我重新改过了,除象a. ba. 少开三个字符的不能正常外,其他的象 "a.畸.", "test...eee..."这样的目录也能正确识别了
afan
发表于 2010-3-31 21:22:57
回复 22# C.L
不好意思,还是会有问题,比如 aaa.bb. 和 aa.abb. 获得的都是一样的~ 呵呵
C.L
发表于 2010-3-31 21:28:09
本帖最后由 C.L 于 2010-3-31 21:32 编辑
回复 23# afan
已改
a.aabb.
aa.abb.
aaa.bb.
都已正常,呵呵~~
放一份在这里:$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 "没有获取短文件名"
Next
EndFunc
afan
发表于 2010-3-31 21:36:50
回复 24# C.L
.aaabb.
aaab.b.
加油,呵呵~ 貌似这一轮的规律有些眉目了
sky808
发表于 2010-3-31 21:39:17
如果只是单单为了操作畸形目录这样不行吗?
#Include <File.au3>
$Folder=_FileListToArray(@ScriptDir,"*",2)
For $i=1 To $Folder
If StringRight($Folder[$i],1)='.' Then RunWait(@ComSpec&" /c rd "&$Folder[$i]&".\","",@SW_HIDE)
Next
afan
发表于 2010-3-31 21:42:04
如果只是单单为了操作畸形目录这样不行吗?
sky808 发表于 2010-3-31 21:39 http://www.autoitx.com/images/common/back.gif
删除之类的很简单,1#有相关代码,但重命名之类的操作必须先获得短文件名
C.L
发表于 2010-3-31 21:49:39
回复 25# afan
这两个好象没问题?
afan
发表于 2010-3-31 21:54:29
回复 28# C.L
我这显示的都是 没有获取短文件名 …… 不知道和我建立的文件夹没删除有无关系
aaa.bb.
aa.abb.
aaabb..
C.L
发表于 2010-3-31 21:56:37
回复 29# afan
不会吧?你的au3什么版本?我这运行都是正常的呀
页:
1
[2]
3
4
5
6
7
8
9
10