afan 发表于 2010-10-21 19:16:59

你们回帖过慢,再不回复我可闪先了~

chenronting 发表于 2010-10-21 19:25:45

回复 31# afan


    网速有点慢. 我是自己加的, 结果还是没有.谢谢你,你如果现在没有时间, 有时间再帮我也行.

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

chenronting 发表于 2010-10-21 19:58:13

回复 33# afan


    不知道为什么, 昨天都可以, 今天都不可以了.现在你发的, 还是不行.得到的还是0.

afan 发表于 2010-10-21 20:02:35

回复 34# chenronting


    修改了下,再试

chenronting 发表于 2010-10-21 20:19:52

回复 35# afan


    嗯, 你那个我已经试过了, 也还是0,

afan 发表于 2010-10-21 20:22:01

回复 36# chenronting


    又修改了下,看看返回的字符串是否正常

chenronting 发表于 2010-10-21 20:38:19

回复 37# afan


    你前面那个我已经试过了,还是0,你可不可以把他们 拆分了再找呢.你这个我完全看不懂, 呵呵 .我得下了.

shano 发表于 2010-10-21 21:05:36

返回正常了恭喜 afan

afan 发表于 2010-10-21 21:05:43

回复 38# chenronting


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

跟帖速度和反馈不行,不利于解决问题。这个问题应该很好解决的,如果你能及时回帖和反馈结果的话~ 不然我修改了一点,等几十分钟反馈,再修改一点,又等几十分钟反馈…

chenronting 发表于 2010-10-22 23:13:26

回复 40# afan


    不好意思 , 我昨天有事,今天我在家里试了下你33#的代码, 已经可以得到正确答案了。非常感谢。

komaau3 发表于 2010-10-27 02:07:22

正则 看来要好好学学了

newuser 发表于 2010-10-27 15:16:48

回复 33# afan


   在WIN7环境下测试返回为0,另外,怎么删除这个目录,DOS的东西忘光了。

afan 发表于 2010-10-27 15:19:18

回复afan


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


    是33#的代码测试的吗?如果是我也没办法,我这没Win7测试~ 第6行就是删除代码

_ddqs. 发表于 2010-10-27 16:36:39

有意思
这想说明什么
33#的在D盘(隐藏的)测试正常
F盘返回0
·用FileGetShortName函数对特殊名称的不能识别,返回原输入!
.看来还是要回用到DOS命令来获取比较好
页: 1 2 [3] 4
查看完整版本: 【已解决】短文件获取的相关问题。用到Afan的UDF