You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerAutomate遍历上传文件资源管理器的所有文件夹及文件至SharePoint库

用Power Automate递归遍历本地文件夹并上传至SharePoint文档库

核心逻辑

通过队列式循环+递归处理,先处理当前文件夹的文件,再收集所有子文件夹加入待处理队列,直到所有层级的文件夹都被遍历完成。

分步实现

1. 初始化变量

  • 创建字符串变量 currentFolderPath:初始值设为你要开始遍历的根文件夹路径(例如 C:\YourRootFolder)
  • 创建数组变量 folderQueue:初始时将 currentFolderPath 添加到数组中,作为第一个待处理项

2. 循环处理所有文件夹

添加 Do until 循环,设置循环终止条件为 length(variables('folderQueue')) equals 0(队列为空时停止)

循环内执行操作:

  • 取出队列首项:
    • 用表达式 first(variables('folderQueue')) 获取当前要处理的文件夹路径
    • 更新 folderQueue 变量,用 remove(variables('folderQueue'), 0) 移除已取出的路径
  • 同步SharePoint文件夹结构:
    • 拆分本地文件夹路径,提取相对于根文件夹的子路径(比如根路径是 C:\Root,当前文件夹是 C:\Root\Team\Project,则相对路径为 Team/Project)
    • 先调用 Get folder metadata using path 动作,传入SharePoint文档库路径+相对路径,判断文件夹是否存在
    • 如果不存在,调用 Create folder 动作在SharePoint中创建对应路径的文件夹
  • 上传当前文件夹内的文件:
    • 调用 List folder 动作,路径设为当前本地文件夹,勾选「Include subfolders?」为 No(仅获取当前文件夹的文件)
    • 添加 Apply to each 循环遍历返回的文件,在循环内用 Upload file 动作将本地文件上传到对应的SharePoint文件夹
  • 收集子文件夹到队列:
    • 再次调用 List folder 动作,路径设为当前本地文件夹,勾选「Include subfolders?」为 No,然后在动作的「Filter array」中筛选出 IsFolder equals true 的项(仅保留子文件夹)
    • 添加 Apply to each 循环遍历这些子文件夹,用 append to array variable 动作将每个子文件夹的 Full Path 添加到 folderQueue 中

关键注意事项

  • 确保本地网关已正确配置,Power Automate能访问你的本地文件系统
  • 处理大量文件时,可在流设置中调整运行时长(默认1小时),避免超时
  • 添加错误处理:用 Scope 包裹上传逻辑,配合 Run after 设置,单个文件上传失败时不中断整个流
  • 避免重复创建文件夹:必须先判断SharePoint中对应路径是否存在,再执行创建操作

内容的提问来源于stack exchange,提问作者Adarsh Awasthi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:23:19