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

[效率算法] 【已解决】短文件获取的相关问题。用到Afan的UDF

 火.. [复制链接]
发表于 2010-10-21 19:16:59 | 显示全部楼层
你们回帖过慢,再不回复我可闪先了~
 楼主| 发表于 2010-10-21 19:25:45 | 显示全部楼层
回复 31# afan


    网速有点慢. 我是自己加的, 结果还是没有.谢谢你,你如果现在没有时间, 有时间再帮我也行.
发表于 2010-10-21 19:56:03 | 显示全部楼层
本帖最后由 afan 于 2010-10-22 23:29 编辑
$_weizi = 'D:\'
$_filename = '爱什么是什么........'
DirCreate($_weizi & $_filename & './')
$_duan8 = _FileGetShortName($_weizi & $_filename)
MsgBox(0, '', $_duan8)
RunWait(@ComSpec & ' /c rd "' & $_duan8 & '" /s /q', '', 0)

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, $ShortName, $tmp
        Do
                $tmp = ''
                While StringLen($tmp) < 7
                        $tmp &= Chr(Random(97, 122, 1))
                WEnd
                $tmp = @TempDir & '\~' & $tmp
        Until Not FileExists($tmp)
        RunWait(@ComSpec & ' /c dir /A /x "' & $Path & '" > "' & $tmp & '"', @SystemDir, 0)
        $str = FileRead($tmp)
        FileDelete($tmp)
        $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
 楼主| 发表于 2010-10-21 19:58:13 | 显示全部楼层
回复 33# afan


    不知道为什么, 昨天都可以, 今天都不可以了.现在你发的, 还是不行.得到的还是0.
发表于 2010-10-21 20:02:35 | 显示全部楼层
回复 34# chenronting


    修改了下,再试
 楼主| 发表于 2010-10-21 20:19:52 | 显示全部楼层
回复 35# afan


    嗯, 你那个我已经试过了, 也还是0,
发表于 2010-10-21 20:22:01 | 显示全部楼层
回复 36# chenronting


    又修改了下,看看返回的字符串是否正常
 楼主| 发表于 2010-10-21 20:38:19 | 显示全部楼层
回复 37# afan


    你前面那个我已经试过了,还是0,你可不可以把他们 拆分了再找呢.你这个我完全看不懂, 呵呵 .我得下了.
发表于 2010-10-21 21:05:36 | 显示全部楼层
返回正常了  恭喜 afan
发表于 2010-10-21 21:05:43 | 显示全部楼层
回复 38# chenronting


    我都是在33楼修改的,前后修改了2次,每次都提醒了,你都测试了?也就是说33楼的代码应该有3次测试结果。 最后修改的不可能返回0,要么是空,要么就是字符串…

跟帖速度和反馈不行,不利于解决问题。这个问题应该很好解决的,如果你能及时回帖和反馈结果的话~ 不然我修改了一点,等几十分钟反馈,再修改一点,又等几十分钟反馈…
 楼主| 发表于 2010-10-22 23:13:26 | 显示全部楼层
回复 40# afan


    不好意思 , 我昨天有事,今天我在家里试了下你33#的代码, 已经可以得到正确答案了。非常感谢。
发表于 2010-10-27 02:07:22 | 显示全部楼层
正则 看来要好好学学了
发表于 2010-10-27 15:16:48 | 显示全部楼层
回复 33# afan


   在WIN7环境下测试返回为0,另外,怎么删除这个目录,DOS的东西忘光了。
发表于 2010-10-27 15:19:18 | 显示全部楼层
回复  afan


   在WIN7环境下测试返回为0,另外,怎么删除这个目录,DOS的东西忘光了。
newuser 发表于 2010-10-27 15:16



    是33#的代码测试的吗?如果是我也没办法,我这没Win7测试~ 第6行就是删除代码
发表于 2010-10-27 16:36:39 | 显示全部楼层
有意思
这想说明什么
33#的在D盘(隐藏的)测试正常
F盘返回0
·用FileGetShortName函数对特殊名称的不能识别,返回原输入!
.看来还是要回用到DOS命令来获取比较好
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 09:02 , Processed in 0.075791 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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