大神,VB问题请教,API遍历查找文件

大神,我想通过Excel的VBA编写一个遍历文件夹的功能具体如下:.我的文件夹下套文件夹,大约有20万个文件夹,约200多万文件。1.能否通过API的方式遍历查找某个文件...    大神,我想通过Excel的VBA编写一个遍历文件夹的功能具体如下:.我的文件夹下套文件夹,大约有20万个文件夹,约200多万文件。
  1.能否通过API的方式遍历查找某个文件并把地址返回到excel表中(excel中的VBA我还比较熟悉,VB中的DIR函数遍历太慢了。
  2.我想遍历查找判断,这20多万个文件夹中,是否有某个文件夹当前目录下既有文件又有文件夹?(按我们的管理方式和要求,这是不符合规定的)。能否不用DIR函数遍历,相当慢。

  大神,如果不是非常耽误你的功夫,希望你能够赐教。
展开
 我来答
网海1书生
科技发烧友

2014-01-09 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26229

向TA提问 私信TA
展开全部
用API的方式比Dir也快不了多少的,因为目前而言,电脑运行速度的最大瓶颈就是硬盘,不管CPU、主板、内存、显卡有多快,在执行文件操作时都不得不慢下来等待硬盘,所以不管软件编得多好多努力,对速度的提升都不大的。就像几十万辆车要排队过一条小桥,一次只能过一辆,那么即使所有车都是法拉利、保时捷,通过小桥的速度也比几十万台拖拉机甚至牛车快不了多少的!关键是要拓宽桥的宽度,或者多建几座桥,比如把机械硬盘换成固态硬盘,速度就会有明显提升的。
追问
我感觉用DIR的方式查找和操作系统本身的搜索功能,效率还是有很大的差别。如,我用DIR遍历查找某类文件如 *.lsp  进行删除,用dir就非常慢,但是操作系统的搜索就快多了
追答
操作系统的搜索之所以快,是依赖于系统的“索引服务”(Indexing Service)的,原理实际上就是把整个文件系统的信息先存放到一个缓冲文件中,文件系统有变动时,索引服务会自动更新缓冲文件,这样的话,搜索文件实际上就变成直接在缓冲文件中搜索,速度肯定就快了。如果把索引服务关闭,那么操作系统的搜索速度就会立刻降下来了。另一方面,索引服务是有副作用的,就是每次进行文件操作时,硬盘会多转动一段时间(因为索引服务要更新数据),还有就是开机速度明显变慢,所以很多用户(包括我)都是把索引服务关闭的。
你可以试着用api函数来操作索引服务,这个我没用过,你可以百度一下看能否解决。另外,你也可以根据索引服务的原理自己搞一个文件信息缓冲系统(可以是小规模的,比如只针对你指定的文件夹),难点是如何实时跟踪文件信息的变动(增、删、改),这个应该是用钩子拦截系统消息来实现。
heyilong78
2014-01-10 · 超过59用户采纳过TA的回答
知道小有建树答主
回答量:178
采纳率:100%
帮助的人:130万
展开全部
用 CMD 下的dir 命令生产文件列表,
然后把内容提取到 excel 里就可以了,何必要用VB来历遍呢?
追问
是文件夹套文件夹,文件夹约20万个,能通过CMD实现吗?如何实现的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式