找回密码
 加入
搜索
查看: 8599|回复: 29

[AU3基础] 已解决 穷举目录及其文件,用什么方法效率最高?

 火... [复制链接]
发表于 2012-3-17 23:22:05 | 显示全部楼层 |阅读模式
本帖最后由 Qokelate 于 2012-3-28 22:57 编辑

如题,假定目标目录是一个结构非常复杂的目录,如Win7的系统盘,要把它的所有子目录和文件列出来,用什么方法效率最高?


答案见26楼
发表于 2012-3-17 23:26:43 | 显示全部楼层
怎么都感觉问题 不错我就不敢妄言了,关注ing
发表于 2012-3-17 23:42:09 | 显示全部楼层
批处理 tree c:\windows /f
发表于 2012-3-17 23:51:54 | 显示全部楼层
哈哈,速度还真快,回头我测试下可否枚举出其他机器的文件夹,如果可以就更好啦
 楼主| 发表于 2012-3-17 23:58:08 | 显示全部楼层
回复 3# netegg


    CMD的速度的确很快,但是否能将其原理应用在Au3中?
发表于 2012-3-18 00:12:00 | 显示全部楼层
dir c:\windows /s/b
 楼主| 发表于 2012-3-18 00:39:33 | 显示全部楼层
回复 6# 3mile


    CMD效率高的原理是什么?能讲解下吗
发表于 2012-3-18 01:34:46 | 显示全部楼层
core i3 笔记本, 运行时间: 138.657 秒,不知道快不快...
#include <File.au3>

_SpeedFindFile('C:\Windows')

Func _SpeedFindFile($sPath, $sFileName = '')
        $aFileList = _FileListToArray($sPath)
        If Not @error Then
                For $i = 1 To $aFileList[0]
                        If StringInStr(FileGetAttrib($sPath & '\' & $aFileList[$i]), "D") Then
                                _SpeedFindFile($sPath & '\' & $aFileList[$i])
                        EndIf
                        ConsoleWrite($sPath & '\' & $aFileList[$i] & @CRLF)
                Next
        EndIf
EndFunc   ;==>_SpeedFindFile
 楼主| 发表于 2012-3-18 01:39:19 | 显示全部楼层
回复 8# lixiaolong


    AU3内部关键字的效率其实并不高,代码再好也是枉然,关键还得API
发表于 2012-3-18 02:05:25 | 显示全部楼层
回复 9# Qokelate
调api也没用,autoit在解析上花的时间就比纯编译文件要多,这个大概是所有脚本类(或者说解释型)语言都存在的问题
发表于 2012-3-18 03:29:55 | 显示全部楼层
我写过某个函数, 在排序与 CMD 的 dir 命令不同时,快过 dir 1/3 左右,排序相同时速度接近甚至超过 dir
刚翻了半天,不知道放在哪个脚本里了…
注意在比对效率时,搜索同一目录时第一次的搜索不算。(不管Au3或是CMD,搜索过一次之后速度都会明显快N多……)
发表于 2012-3-18 11:22:14 | 显示全部楼层
我写过某个函数, 在排序与 CMD 的 dir 命令不同时,快过 dir 1/3 左右,排序相同时速度接近甚至超过 dir
...
afan 发表于 2012-3-18 03:29



    启用索引服务,呵呵,下次搜索的时候比较快
 楼主| 发表于 2012-3-18 11:32:32 | 显示全部楼层
回复 11# afan


    的确如此,貌似Win本身会记录某些特征,那函数的思路还记得吗?也许可以重构个
 楼主| 发表于 2012-3-18 11:33:47 | 显示全部楼层
回复 12# 虫子樱桃


    即使禁用索引,第二次搜索也是比第一次要快的!不过有个前提就是未重启!
发表于 2012-3-18 12:42:59 | 显示全部楼层
回复 13# Qokelate


    用 FileFindFirstFile()、FileFindNextFile() 是肯定的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-16 19:16 , Processed in 0.079334 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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