找回密码
 立即注册
  • 便民服务
  • 关注我们
  • 社区新手

[谈天说地] 【存档01】如何获取全部文件名称(含子文件夹)?

[复制链接]

马上注册,享用更多功能,让你轻松玩转DOSPY论坛-诺亚方舟号

您需要 登录 才可以下载或查看,没有账号?立即注册

x
QUOTE:
作者:E精精 (Excel办公实战)
原贴标题:如何获取全部文件名称(含子文件夹)?
原贴地址:httpsx://mp.weixin.qq.com/s/zlX4K9W5MpaLJTexqomBjQ



我们如何要做多文件处理,第一步就是需要获取到全部的文件,然后才能谈合并或者其他操作!

今天我们就是介绍如何获取全部文件名称!

为了大家方便调用,我们通过FSO对象来处理!



讲解01 |  了解FSO对象

FSO对象-用于对文件文件夹管理,包括常见的增、删、查、改、移等操作!

这里我们推荐新手使用前期绑定,也就是我们下面的写法 NEW进行实例化!
这样会有智能提示,你写起来会轻松一些!

比如下面根据路径获取文件夹对象,输入 getfo就会调出来 GetFolder 方法





640.png







讲解02 | 获取指定路径下的全部文件夹(不含子级)

非常简单,说白了,就是FSO这个类封装好了一些常用方法,我们只要知道语法去调用,不需要知道内部如何去实现的!

下面的代码,列出了给定路径(basePath常量)






641.png





这句就是获取全部文件夹对象,他有很多属性或者方法
  1. oFso.GetFolder(basePath).SubFolders
复制代码


我们想要的只是每个文件夹对象的全路径,当然你也可以获取文件夹名称




642.png




如果你注意一下上图,你会发现他有一个Files属性,下面我们想要获取文件信息就要使用到!







讲解03 | 获取文件夹中的文件名称

files是文件夹对象的一个属性,通过他可以获得文件夹下的全部文件对象,就好像大家看到的一样,文件有很多属性,比如创建时间、修改时间、大小等
其实Name就是名称,Path就是路径+名称




643.png




有了上面的铺垫,我们结合递归就可以写一个列出全部文件名称的程序了!







讲解04 | 列出全部文件名称(含子级)

为了方便大家调用,我们成型的代码还是使用后期绑定,这样就不需要引用对应的dll文件库了!

封装好后一句代码即可调用获取文件名称,当然想获取路径+名称 的使用Path前面铺垫已讲,其他属性,大小什么的也可以获取!







644.png







示例源码:如何使用VBA代码?

  1. Const basePath As String = "D:\OFFICE模板\Excel"
  2. Dim n As Long '记录文件数目
  3. 'Excel办公实战
  4. '-----------------------------------------------
  5. Sub getFiles(spath As String)
  6.     Dim oFso As Object, ofile As Object, fd As Object
  7.     Dim baseFolder As Object
  8.    
  9.     '创建Fso对象-后期绑定
  10.     Set oFso = CreateObject("Scripting.FileSystemObject")
  11.    
  12.     '获取文件夹对象
  13.     Set baseFolder = oFso.GetFolder(spath)
  14.    
  15.     '遍历对应的文件夹中的全部文件夹
  16.     For Each ofile In baseFolder.Files
  17.         n = n + 1
  18.         Cells(n, 1) = ofile.Name '文件名称写入A列
  19.     Next
  20.    
  21.     '处理所有文件夹
  22.     For Each fd In baseFolder.SubFolders
  23.         '递归调用
  24.        getFiles fd.Path
  25.     Next
  26. End Sub

  27. '一句代码调用
  28. Sub 获取全部文件名称()
  29.     getFiles basePath
  30. End Sub
复制代码



如果你是要供其他过程调用,建议把数据封装到一个全局数组中!这里就不再展开了!递归什么?大概就是“从前有座山,山里……”,你们都熟悉吧!
递归的方法非常简洁,也是开发的必备技能之一~




另附py脚本示例:
  1. import os

  2. def traverse_dir(path):
  3.     for root, dirs, files in os.walk(path):
  4.         print("当前目录:", root)
  5.         print("子目录列表:", dirs)
  6.         print("文件列表:", files)

  7. dir_path = "你的目录"
  8. print('待遍历的目录为:', dir_path)
  9. print('遍历结果为:')
  10. traverse_dir(dir_path)
复制代码






上一篇:2023年10月12日签到记录贴
下一篇:2023年10月13日签到记录贴
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册