找回密码
 加入
搜索
楼主: afan

[系统综合] 获取畸形文件夹的短文件名

 火... [复制链接]
发表于 2010-3-31 17:59:22 | 显示全部楼层
回复 15# afan

我这里显示是对的,不知?

用10楼的代码生成的testeee. 文件夹

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2010-3-31 18:02:45 | 显示全部楼层
本帖最后由 afan 于 2010-3-31 20:51 编辑

回复 16# 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. 这样少于三个字符的没弄清楚这种算法,不知道是什么规律?有知道的能跟下贴就最好了。

评分

参与人数 1金钱 +35 收起 理由
afan + 35

查看全部评分

 楼主| 发表于 2010-3-31 18:21:29 | 显示全部楼层
回复 18# C.L


    呵呵,谢谢~
 楼主| 发表于 2010-3-31 20:45:07 | 显示全部楼层
1#已添加我写的代码附件。
 楼主| 发表于 2010-3-31 20:49:29 | 显示全部楼层
我有时候在最后面加一个点。 也没能进去。 是什么原因呢。

这种文件夹是不是都只要加一个点就能进去了呢 ...
chenronting 发表于 2010-3-31 17:11



    是的。如果上级目录也是畸形文件夹同样需要加.
发表于 2010-3-31 21:14:33 | 显示全部楼层
回复 21# afan
18#的我重新改过了,除象a. ba. 少开三个字符的不能正常外,其他的象 "a.畸.", "test...eee..."这样的目录也能正确识别了
 楼主| 发表于 2010-3-31 21:22:57 | 显示全部楼层
回复 22# C.L


    不好意思,还是会有问题,比如 aaa.bb. 和 aa.abb. 获得的都是一样的~ 呵呵
发表于 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
 楼主| 发表于 2010-3-31 21:36:50 | 显示全部楼层
回复 24# C.L


.aaabb.
aaab.b.

加油,呵呵~ 貌似这一轮的规律有些眉目了
发表于 2010-3-31 21:39:17 | 显示全部楼层
如果只是单单为了操作畸形目录这样不行吗?
#Include <File.au3>

$Folder=_FileListToArray(@ScriptDir,"*",2)
For $i=1 To $Folder[0]
If StringRight($Folder[$i],1)='.' Then RunWait(@ComSpec&" /c rd "&$Folder[$i]&".","",@SW_HIDE)
Next
 楼主| 发表于 2010-3-31 21:42:04 | 显示全部楼层
如果只是单单为了操作畸形目录这样不行吗?
sky808 发表于 2010-3-31 21:39



    删除之类的很简单,1#有相关代码,但重命名之类的操作必须先获得短文件名
发表于 2010-3-31 21:49:39 | 显示全部楼层
回复 25# afan

这两个好象没问题?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2010-3-31 21:54:29 | 显示全部楼层
回复 28# C.L


    我这显示的都是 没有获取短文件名 …… 不知道和我建立的文件夹没删除有无关系
aaa.bb.
aa.abb.
aaabb..
发表于 2010-3-31 21:56:37 | 显示全部楼层
回复 29# afan

不会吧?你的au3什么版本?我这运行都是正常的呀
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-25 16:01 , Processed in 0.072478 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表