afan 发表于 2010-10-21 17:50:59

回复afan


    文件名回来的都是正常的. 不知道你那个UDF里的是怎么取得短文件名的.现在我这台可以的 ...
chenronting 发表于 2010-10-21 17:49 http://www.autoitx.com/images/common/back.gif

那就是我那代码的问题了,我修改下,返回些信息看看

afan 发表于 2010-10-21 17:55:15

在30-31行之间插入一行 FileWrite('test.x', $str) ,然后看看'test.x'里面的内容是否正常,有必要的话请提交'test.x'附件

chenronting 发表于 2010-10-21 18:07:19

回复 17# afan

    我这里加入了你给的代码. 就死循环了。 不停的写入那个文本,体积也是不停的加啊。我现在删了。 只有一点。 传上来给你看一下
,好像是目录不对

把AU3改成x就行了

afan 发表于 2010-10-21 18:11:07

回复 18# chenronting


    你加错位置了吧,

      WEnd
       加在这里。。。
      If Not StringRegExp($str, '<DIR>.+\s' & $File & '\r') Then Return SetError(1, 0, 0)

附件没有那个文件的信息。。

shano 发表于 2010-10-21 18:11:32

加入写'test.x'的代码我这里没出现死循环
我的测试结果如下
用CMD 下可以看到畸形文件
但是test.x里没有

chenronting 发表于 2010-10-21 18:14:29

回复 19# Afan


    嗯, 主要是TEST里面没有我要的那个目录信息.不知道是怎么回事。 那个目录是我运行AU3的目录。

afan 发表于 2010-10-21 18:15:23

加入写'test.x'的代码我这里没出现死循环
我的测试结果如下
用CMD 下可以看到畸形文件
但是test.x里 ...
shano 发表于 2010-10-21 18:11 http://www.autoitx.com/images/common/back.gif


    看来循环读取流信息有问题

chenronting 发表于 2010-10-21 18:16:33

本帖最后由 chenronting 于 2010-10-21 18:21 编辑

回复 19# afan


我试过在里面加入 $i +=1
得到的是 9
而TEST里的文字是 驱动器 D 中的卷是 DISK2_VOL2
卷的序列号是 6FB8-82E4

D:\Backup\我的文档\myudisk\维护记录工具(FTP) 的目录

2010-10-2017:42    <DIR>                     .
2010-10-2017:42    <DIR>                     ..
2010-03-3118:14            10,814            FTP.au3
2010-10-2009:46               149 FTPCON~1.INI FTPConfig.ini
2008-12-0510:58             8,704            getinfo.dll
2010-10-2012:33             1,496 INIREA~1.AU3 IniReadSection.au3
2010-10-2118:24             1,915 _FILEG~1.AU3 _FileGetShortName.au3
2010-10-2011:45               975 初始配置.DAT 初始配置.dat
2010-10-2011:17         452,353 启航电脑.EXE 启航电脑.exe
2010-10-2017:13            24,881 启航电~1.AU3 启航电脑love.au3
2010-10-2012:50                36 新建AU~1.AU3 新建 AutoIt v3 脚本.au3
2010-10-2117:51             3,425 新维修~1.AU3 新维修记录工具.au3
2010-10-2017:42    <DIR>          BACKUP       BackUp
2010-10-2118:13             9,266            test.au3
            11 个文件      514,014 字节

afan 发表于 2010-10-21 18:23:50

回复 23# chenronting
回复 20# shano

修改了下,请你们再测试看看$_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 = '', $too, $ShortName
      $too = Run(@ComSpec & ' /c dir /A /x "' & $Path & '"', '', 0, 2)
      While 1
                Sleep(1)
                $str = StdoutRead($too)
                If @error Then ExitLoop
                $ShortName = StringRegExpReplace($str, '(?s).+<DIR>\s+?([^\s]+)\s+?' & $File & '.+', '$1')
                If @extended > 0 Then ExitLoop
      WEnd
      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 18:26:37

回复 24# afan


    发现一个问题, 程序运行的目录很重要. 我在桌面下运行, 得到的是空的TEST, 而在D盘下, 得到的是正确的, 不过得到的MSGBOX, 还是0,我出去一下, 马上回来 . ~

shano 发表于 2010-10-21 18:44:10

回复 25# chenronting


    因为桌面的路径里有空格

chenronting 发表于 2010-10-21 18:54:44

回复 26# shano


    呵呵 .谢谢. 不过, 跟AU3的运行目录有关. 这样就不太好了.还要把这个子程序释放到要得到短文件名的目录下吗.很麻烦.希望Afan 帮下. 我在等您 ~

afan 发表于 2010-10-21 18:56:49

你们的结果呢?

chenronting 发表于 2010-10-21 19:04:55

回复 28# afan


    我的在25楼, 还是不行

afan 发表于 2010-10-21 19:08:06

回复 29# chenronting


    25楼是用哪个代码测试的?我24楼的代码里可没有test...
页: 1 [2] 3 4
查看完整版本: 【已解决】短文件获取的相关问题。用到Afan的UDF