【文件获取】获取目录及其子目录下所有的文件,支持关键字过滤。

瞌睡蟲子 2019-4-18 1739

源代码:

import Sys
import Regex
// dir:待获取文件的目录(支持通配符);match:字符串过滤(dir带通配符也可以搞定);hasChild:是否获取其子目录文件
Function getFiles(dir=@res"", match="", hasChild=False)
    dim sRet
    dim exe = "DIR /A/B "
    If hasChild
        exe = "DIR /S/B "
    End If
    If match = ""
        sRet = Sys.Command(exe & dir )
    Else
        sRet = Sys.Command(exe & dir & " | findstr /I " & match)
    End If
    return Regex.FindAll(sRet,"^(.*?)$")
End Function

// 获取d:\\demo及其子目录下的所有文件
TracePrint(getFiles("d:\\demo","",True))
// 只获取d:\\demo及其下的png文件,不获取其子目录文件
TracePrint(getFiles("d:\\demo","png"))
// 获取d:\\demo及其子目录下的bmp文件
TracePrint(getFiles("d:\\demo","bmp",True))
// 只获取d:\\demo下的,文件路径包含zrr的png文件。
TracePrint(getFiles("d:\\demo\\*.png","zrr"))

// 也支持目录直接写通配符
TracePrint(getFiles("d:\\demo\\*.txt"))
// 多值条件过滤,只获取d:\\demo及其下的txt和png文件
TracePrint(getFiles("( d:\\demo\\*.txt d:\\demo\\*.png )"))

// 默认当前工程目录下
TracePrint(getFiles())


运行效果:

_【文件获取】获取目录及其子目录下所有的文件,支持关键字过滤。

最新回复 (9)
  • 哒哒 2019-4-19
    2

    。。。也就是说是用DOS命令+正则进行输出啊。正则部分没看懂  :P

  • 瞌睡蟲子 2019-4-20
    3
    哒哒 。。。也就是说是用DOS命令+正则进行输出啊。正则部分没看懂  :P

    命令结果内容是一行一个文件路径。正则默认是不支持多行匹配的,也就是碰到\n就认为是结束位$。因此可以用开始+结尾中间任意多个字符,来提取一行。

  • 李会计 2021-6-13
    4
    如果读到一个excel 文件,如何用excel打开?
  • 瞌睡蟲子 2021-6-15
    5
    李会计 如果读到一个excel 文件,如何用excel打开?
    用excel相关命令
  • 李会计 2021-6-17
    6
    请教为什么用EXCEL打开文件窗口不是最大化状态?用EXCEL打开最大化窗口,保存后关闭,用打开EXCEL工作薄也还是不是窗口最大化?如何解决?
  • 瞌睡蟲子 2021-6-17
    7
    李会计 请教为什么用EXCEL打开文件窗口不是最大化状态?用EXCEL打开最大化窗口,保存后关闭,用打开EXCEL工作薄也还是不是窗口最大化?如何解决?
    先熟悉一下命令吧,你问的这些问题,把ub的命令过一遍就有答案。窗口操作放在那里
  • 王广宇_477137 2021-9-16
    8
    请问这个源代码5.6.0版本的creater也可以使用吗?
  • 瞌睡蟲子 2021-9-16
    9
    王广宇_477137 请问这个源代码5.6.0版本的creater也可以使用吗?

    可以用的,不过5.6自带的文件处理已经包含这些功能了

  • 黄女士_463968 2021-12-3
    10
    找到了对应文件 如何进行移动
返回
发新帖