美文网首页
【Uipath】如何获取指定文件夹下所有子文件夹和所有Excel

【Uipath】如何获取指定文件夹下所有子文件夹和所有Excel

作者: 天天蓝海 | 来源:发表于2020-06-15 22:27 被阅读0次

    需求:获得指定目录下的所有文件和目录(包含所有子目录和子文件),目录都是层层嵌套的,我们不能预知目录深度。

    解决方案:使用递归算法进行遍历获取,什么是递归,简而言之就是自己调用自己的一种方法,关于递归算法自行百度。


    本例通过递归方法来实现这一需求,输出所有文件夹路径,以及所有Excel文件名。


    模拟环境及说明:

    给定测试目录: C:\Users\admin\Desktop\递归查找,前提是我们不知道该指定文件夹下有多少个子文件夹以及子文件。

    测试目录说明:

    该目录下创建了需要测试的两级文件目录、以及按文件夹名创建的.txt .xlsx文件。

    测试文件夹 测试文件夹 测试文件夹

    首先需要明确目的:根据文件目录、文件夹目录,输出所有文件夹名以及所有Excel文件名,因为无法获知目录深度,所以通过父文件夹层层遍历。

    然后进行递归逻辑判断:

    找整个递归的终止条件:递归应该在什么时候结束?

    找返回值:应该给上一级返回什么信息?

    本级递归应该做什么:在这一级递归中,应该完成什么任务?

    递归逻辑思考:

    1.递归应该在什么时候终止?

    应该在所有文件夹遍历后无子文件夹存在时终止。

    2.返回值:

    子目录下文件及文件夹的长度(个数)

    3.本级递归应该完成的任务:

    ①.判断目录下有无文件:如果有,进行遍历文件目录,判断文件扩展名,符合条件的打印输出。

    ②.判断目录下有无文件夹,如果有,遍历文件夹目录,打印输出文件夹名。


    操作示例:

    定义参数Path_Find,初始目录为:C:\Users\admin\Desktop\递归查找

    Step1:判断文件目录长度

    if(length>0)不为空,遍历文件目录,判断文件扩展名,打印输出满足条件的文件名。循环结束后,判断文件夹目录;

    else为空,判断文件夹目录。

    判断文件目录是否为空 不为空,遍历文件目录

    Step2:判断文件夹目录长度

    If(length>0),不为空,遍历文件夹目录,打印子文件夹名。再进行调用自身,继续判断文件目录,不断遍历循环。

    Else,为空,不操作。

    判断文件夹目录是否为空 不为空,遍历文件夹目录

    其中Invoke Workflow File调用自己时,参数Path_Find为子文件夹路径

    参数设定

    完整流程

    流程


    运行验证:

    运行验证

    另一种实现方式

    补充说明:.NET有内置搜索方法,方法见微软官方文档https://docs.microsoft.com/en-us/dotnet/api/system.io.directory.getdirectories?view=netcore-3.1

    Step1:定义返回搜索文件数组和返回搜索文件夹数组

               【注意】该方法不保证返回值的排列顺序,支持通配符"?"和"*",但不支持正则表达式。

    Array_Files类型String[] Array_Directories类型String[]

    Step2:遍历数组并打印

    遍历数组

    打印输出结果:

      可以发现返回值的排列顺序并不固定,如果需要按一定规则排序,请使用Sort方法。

    结果打印

    相关文章

      网友评论

          本文标题:【Uipath】如何获取指定文件夹下所有子文件夹和所有Excel

          本文链接:https://www.haomeiwen.com/subject/wckkxktx.html