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

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

 火.. [复制链接]
发表于 2010-10-21 17:50:59 | 显示全部楼层
回复  afan


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


那就是我那代码的问题了,我修改下,返回些信息看看
发表于 2010-10-21 17:55:15 | 显示全部楼层
在30-31行之间插入一行 FileWrite('test.x', $str) ,然后看看'test.x'里面的内容是否正常,有必要的话请提交'test.x'附件
 楼主| 发表于 2010-10-21 18:07:19 | 显示全部楼层
回复 17# afan

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

把AU3改成x就行了

本帖子中包含更多资源

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

×
发表于 2010-10-21 18:11:07 | 显示全部楼层
回复 18# chenronting


    你加错位置了吧,

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

附件没有那个文件的信息。。
发表于 2010-10-21 18:11:32 | 显示全部楼层
加入写'test.x'的代码  我这里没出现死循环
我的测试结果如下
用CMD 下可以看到畸形文件
但是test.x  里没有
 楼主| 发表于 2010-10-21 18:14:29 | 显示全部楼层
回复 19# Afan


    嗯, 主要是TEST里面没有我要的那个目录信息.不知道是怎么回事。 那个目录是我运行AU3的目录。
发表于 2010-10-21 18:15:23 | 显示全部楼层
加入写'test.x'的代码  我这里没出现死循环
我的测试结果如下
用CMD 下可以看到畸形文件
但是test.x  里 ...
shano 发表于 2010-10-21 18:11



    看来循环读取流信息有问题
 楼主| 发表于 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-20  17:42    <DIR>                       .
2010-10-20  17:42    <DIR>                       ..
2010-03-31  18:14            10,814              FTP.au3
2010-10-20  09:46               149 FTPCON~1.INI FTPConfig.ini
2008-12-05  10:58             8,704              getinfo.dll
2010-10-20  12:33             1,496 INIREA~1.AU3 IniReadSection.au3
2010-10-21  18:24             1,915 _FILEG~1.AU3 _FileGetShortName.au3
2010-10-20  11:45               975 初始配置.DAT 初始配置.dat
2010-10-20  11:17           452,353 启航电脑.EXE 启航电脑.exe
2010-10-20  17:13            24,881 启航电~1.AU3 启航电脑love.au3
2010-10-20  12:50                36 新建AU~1.AU3 新建 AutoIt v3 脚本.au3
2010-10-21  17:51             3,425 新维修~1.AU3 新维修记录工具.au3
2010-10-20  17:42    <DIR>          BACKUP       BackUp
2010-10-21  18:13             9,266              test.au3
              11 个文件        514,014 字节
发表于 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
 楼主| 发表于 2010-10-21 18:26:37 | 显示全部楼层
回复 24# afan


    发现一个问题, 程序运行的目录很重要. 我在桌面下运行, 得到的是空的TEST, 而在D盘下, 得到的是正确的, 不过得到的MSGBOX, 还是0,我出去一下, 马上回来 . ~
发表于 2010-10-21 18:44:10 | 显示全部楼层
回复 25# chenronting


    因为桌面的路径里有空格
 楼主| 发表于 2010-10-21 18:54:44 | 显示全部楼层
回复 26# shano


    呵呵 .谢谢. 不过, 跟AU3的运行目录有关. 这样就不太好了.还要把这个子程序释放到要得到短文件名的目录下吗.很麻烦.希望Afan 帮下. 我在等您 ~
发表于 2010-10-21 18:56:49 | 显示全部楼层
你们的结果呢?
 楼主| 发表于 2010-10-21 19:04:55 | 显示全部楼层
回复 28# afan


    我的在25楼, 还是不行
发表于 2010-10-21 19:08:06 | 显示全部楼层
回复 29# chenronting


    25楼是用哪个代码测试的?我24楼的代码里可没有test...
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-22 12:01 , Processed in 0.073730 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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