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
查看完整版本: 获取畸形文件夹的短文件名