做电商运营,除了采集数据,每天还要跟大量文件打交道——供应商发来的报价单、平台的退货凭证、每天导出的订单报表、店铺装修的图片素材……时间一长,桌面和下载文件夹就变成了“垃圾场”,找个文件比采集数据还费劲。
我也是非技术出身,最开始处理文件全靠手动——一个一个重命名、一个一个拖进对应的文件夹。有一次要给200多张商品图重命名,改到第50个的时候眼花了,把“连衣裙_黑色”命名成了“连衣裙_黑包” ,后面全部乱套。后来用影刀写了几个文件处理的流程,200个文件3分钟搞定,零失误。
今天就把文件与文件夹批量处理的完整方案讲一遍。
文件处理的三个核心场景
文件处理自动化主要有三类需求,搞清楚你要解决哪一类,再选对应的指令:
| 场景 | 典型需求 | 核心指令 |
|---|---|---|
| 批量重命名 | 统一加前缀/后缀、替换关键词、按日期重命名 | 获取文件列表 + 文件重命名 |
| 分类归档 | 按类型/日期/关键词移动到不同文件夹 | 获取文件列表 + 移动文件 |
| 批量创建与清理 | 批量建文件夹、删除临时文件 | 批量创建带顺序的文件夹 + 删除文件 |
准备工作:文件操作的核心指令
影刀RPA里文件操作相关的指令都在右侧指令面板的“文件与文件夹”分类下。最常用的就这几条:
| 指令名称 | 作用 | 关键参数 |
|---|---|---|
| 获取文件列表 | 读取文件夹里的所有文件 | 文件夹路径、文件名匹配规则(如*.xlsx)、是否查找子文件夹 |
| 获取文件路径信息 | 提取文件名、后缀、所在目录 | 文件路径 |
| 文件重命名 | 修改文件名 | 原文件路径、新文件路径 | | 移动文件 | 把文件移到另一个文件夹 | 要移动的文件、目标文件夹 | | 拷贝文件 | 复制文件到另一个文件夹 | 要拷贝的文件、目标文件夹 | | 删除文件 | 删除指定文件 | 要删除的文件 | | 创建文件夹 | 新建一个文件夹 | 父文件夹目录、新文件夹名称 | | 移动/拷贝文件夹 | 整个文件夹移动或复制 | 源文件夹路径、目标文件夹路径 |
实战一:批量重命名——3分钟搞定200个文件
这是最常用也最基础的文件处理场景。核心思路:获取文件列表→遍历每个文件→按规则生成新文件名→执行重命名。
案例:给商品图片统一加前缀
场景:你从相机里导出了200张商品图,文件名是
IMG_0001.jpg、IMG_0002.jpg……想统一改成店铺名_20260629_001.jpg这种格式。
完整流程:
# 1. 让用户选择目标文件夹
打开选择文件夹对话框 → $目标文件夹
# 2. 获取该文件夹下所有图片
获取文件列表:
文件夹 = $目标文件夹
文件名匹配规则 = "*.jpg" # 只处理jpg格式
查找子文件夹 = False
保存文件列表至 → $文件列表
# 3. 循环遍历每个文件
设置 $序号 = 1
ForEach $当前文件 in $文件列表:
# 3.1 提取原文件名和后缀
获取文件路径信息:
文件路径 = $当前文件
提取文件名 → $原文件名
提取文件后缀 → $后缀
# 3.2 生成新文件名(店铺名_日期_序号.后缀)
$新文件名 = "我的店铺_" + 获取当前日期("YYYYMMDD") + "_" + 格式化数字($序号, 3) + "." + $后缀
$新文件路径 = $目标文件夹 + "\" + $新文件名
# 3.3 执行重命名
文件重命名:
要重命名的文件 = $当前文件
新文件路径 = $新文件路径
$序号 = $序号 + 1
结束
输出日志("重命名完成,共处理" + 获取列表长度($文件列表) + "个文件")
一个容易踩的坑:重命名时如果新文件名已经存在,会报错。解决方法:在重命名前用“文件是否存在”指令判断一下,存在的话在文件名后面加个随机数或时间戳。
进阶:从Excel读取命名规则
如果命名规则比较复杂——比如每个文件要改成Excel里指定的名字,可以从Excel读取:
# 打开Excel,读取命名对照表
打开Excel("C:\命名规则.xlsx") → $Excel对象
读取表格数据 → $命名列表 # 两列:原文件名、新文件名
# 遍历文件列表,匹配Excel里的规则
ForEach $当前文件 in $文件列表:
获取文件路径信息($当前文件) → $原文件名
# 在$命名列表里查找对应的新文件名
$新文件名 = 在列表中查找($命名列表, $原文件名, 匹配列=0, 返回列=1)
如果 $新文件名 != "":
文件重命名($当前文件, $目标文件夹 + "\" + $新文件名)
结束
结束
实战二:按规则自动分类归档
场景:下载文件夹里堆了几百个文件——有Excel报表、有图片、有PDF合同。你想让机器人按文件类型自动归类到不同文件夹:图片进
图片库、Excel进报表、PDF进合同。
方案一:按文件后缀分类
# 1. 获取下载文件夹的所有文件
获取文件列表("C:\Users\用户名\Downloads", "*.*") → $文件列表
# 2. 确保分类文件夹存在
创建文件夹("C:\文件归档\图片")
创建文件夹("C:\文件归档\报表")
创建文件夹("C:\文件归档\合同")
创建文件夹("C:\文件归档\其他")
# 3. 遍历并分类移动
ForEach $当前文件 in $文件列表:
获取文件路径信息($当前文件) → $后缀
如果 $后缀 == ".jpg" 或 $后缀 == ".png" 或 $后缀 == ".gif":
移动文件($当前文件, "C:\文件归档\图片")
否则如果 $后缀 == ".xlsx" 或 $后缀 == ".xls" 或 $后缀 == ".csv":
移动文件($当前文件, "C:\文件归档\报表")
否则如果 $后缀 == ".pdf":
移动文件($当前文件, "C:\文件归档\合同")
否则:
移动文件($当前文件, "C:\文件归档\其他")
结束
结束
移动 vs 拷贝的选择:
- 移动文件:原位置的文件消失,只保留在新位置。适合“整理归档”场景。
- 拷贝文件:原位置的文件保留,新位置多一份副本。适合“备份”场景。
方案二:按文件名关键词分类
有些文件按后缀分不够精细——同样是Excel,有的是“订单报表”、有的是“商品数据”。可以按文件名里的关键词来分类:
# 按关键词分类
如果 $文件名包含 "订单":
移动文件($当前文件, "C:\文件归档\订单报表")
否则如果 $文件名包含 "商品" 或 $文件名包含 "产品":
移动文件($当前文件, "C:\文件归档\商品数据")
否则如果 $文件名包含 "退货" 或 $文件名包含 "售后":
移动文件($当前文件, "C:\文件归档\售后记录")
否则:
移动文件($当前文件, "C:\文件归档\其他")
结束
方案三:按文件修改日期分类
按日期建文件夹,每天的文件归到当天的目录下:
ForEach $当前文件 in $文件列表:
获取文件信息($当前文件) → $修改日期 # 获取文件的修改日期
$日期文件夹 = "C:\文件归档\" + 格式化日期($修改日期, "YYYY-MM-DD")
# 如果当天的文件夹不存在,先创建
如果 文件夹不存在($日期文件夹):
创建文件夹($日期文件夹)
结束
移动文件($当前文件, $日期文件夹)
结束
一个容易踩的坑:获取文件列表指令默认只获取当前文件夹的文件,不会获取子文件夹里的文件。如果你需要处理子文件夹里的文件,记得勾选“查找子文件夹”选项。
实战三:批量创建带顺序的文件夹
做项目管理或日报系统时,经常需要一次性创建多个带编号的文件夹——比如项目_01到项目_30。
影刀有一个专门的“批量创建带顺序的文件夹”魔法指令,一句话搞定。
配置参数:
- 文件夹数量:要创建几个(比如30个)
- 命名前缀:文件夹名称前缀(比如
项目_) - 起始序号:从几开始编号(比如01)
- 保存路径:在哪个目录下创建
运行后自动生成项目_01、项目_02……项目_30,整齐划一。
拓展玩法:可以结合Excel,从表格里读取名称列表,批量生成自定义命名的文件夹。比如从Excel读取“店铺A、店铺B、店铺C……”,自动创建对应名称的文件夹。
实战四:批量压缩图片文件
运营同学经常需要批量压缩图片——商品图太大上传慢、活动海报超出发送限制。
影刀的“批量压缩图片文件”魔法指令可以一键搞定。
参数配置:
- 输入图片所在文件夹路径:待压缩图片所在的文件夹
- 压缩后图片保存的文件夹路径:压缩后输出的文件夹
- 压缩质量:0-100,默认85
- 目标最大文件大小:可选,如0.5MB
运行后自动遍历文件夹下所有支持的图片格式(JPG、PNG、WEBP),逐张压缩,保存到输出文件夹,并输出压缩前后大小变化、压缩率等统计信息。
实战五:批量清理——删除临时文件和空文件夹
流程跑久了,临时文件会越积越多。写一个清理流程,定期清理不需要的文件。
清理指定类型文件
# 删除所有.tmp临时文件
获取文件列表("C:\临时文件夹", "*.tmp") → $文件列表
ForEach $当前文件 in $文件列表:
删除文件($当前文件)
结束
输出日志("已删除" + 获取列表长度($文件列表) + "个临时文件")
删除空文件夹
影刀的“删除文件夹”指令可以直接删除空文件夹。如果要删除非空文件夹,需要先清空里面的文件。
安全提醒:删除操作不可逆。建议先移动到一个“待删除”文件夹,确认无误后再手动清空,而不是直接删除。
进阶技巧:文件去重与筛选
筛选重复文件
影刀有“筛选重复文件”指令,可以按文件MD5值或文件名找出重复文件。
参数设置:
- 比较依据:文件名 / 文件大小 / MD5值
- 保留规则:保留最早/最晚修改的那个
- 输出:重复文件列表 + 重复文件报表
获取最新的几个文件
如果只需要处理文件夹里最新的几个文件(比如最新的3个报表),可以用列表切片:
获取文件列表(文件夹, "*.*") → $文件列表
# 对文件列表按修改时间排序(需要Python辅助)
# 取前3个
$最新3个文件 = $文件列表[:3]
把文件处理封装成可复用的子流程
和之前封装企微通知、邮件通知一样,把常用的文件处理逻辑封装成子流程。
子流程:Z03_批量重命名(加前缀)
输入参数:
- $文件夹路径(字符串)
- $前缀(字符串)
- $文件类型(字符串,默认"*.*")
流程体:
获取文件列表($文件夹路径, $文件类型) → $文件列表
ForEach $当前文件 in $文件列表:
获取文件路径信息($当前文件) → $文件名, $后缀
$新文件名 = $前缀 + $文件名 + "." + $后缀
文件重命名($当前文件, $文件夹路径 + "\" + $新文件名)
结束
输出日志("重命名完成,共" + 列表长度 + "个文件")
子流程:Z04_按类型归档
输入参数:
- $源文件夹(字符串)
- $目标根目录(字符串)
- $类型映射(字典,如{"图片":[".jpg",".png"], "报表":[".xlsx"]})
流程体:
# 遍历类型映射,创建对应的目标文件夹
ForEach $类型名 in $类型映射.keys():
创建文件夹($目标根目录 + "\" + $类型名)
结束
获取文件列表($源文件夹, "*.*") → $文件列表
ForEach $当前文件 in $文件列表:
获取文件路径信息($当前文件) → $后缀
# 判断属于哪个类型
$目标文件夹 = 根据后缀匹配类型($后缀, $类型映射)
如果 $目标文件夹 != "":
移动文件($当前文件, $目标文件夹)
结束
结束
以后任何项目需要批量重命名或归档,只需要调用对应的子流程,传入参数就行。
五个容易踩的坑
坑一:路径里有中文或空格
现象:文件操作指令报错,说找不到文件。
原因:路径里有中文或空格,没有正确处理。
解决方法:路径尽量用英文和数字。如果一定要用中文,确保路径用引号括起来。
坑二:移动/删除操作不可逆
现象:跑完流程后发现文件没了,想恢复也恢复不了。
原因:移动和删除操作是永久性的,不会进回收站。
解决方法:重要文件先用“拷贝”代替“移动” ,确认无误后再手动删除原文件。
坑三:文件被占用导致操作失败
现象:重命名或删除文件时报错“文件被占用”。
原因:文件正在被其他程序打开(比如Excel文件正开着)。
解决方法:运行文件处理流程前,关闭所有可能占用这些文件的程序。或者在流程里加Try-Catch,被占用的文件跳过并记录日志。
坑四:获取文件列表时漏掉了子文件夹
现象:明明子文件夹里有文件,但流程没处理到。
原因:获取文件列表指令默认不查找子文件夹。
解决方法:在指令详情面板里勾选“查找子文件夹” 。
坑五:重命名时文件名冲突
现象:重命名报错,说文件名已存在。
原因:新文件名和已有的文件名重复了。
解决方法:重命名前用“文件是否存在”判断一下,存在的话在文件名后面加时间戳或随机数。
常见问题速查
| 问题 | 排查方向 |
|---|---|
| 获取不到文件 | 检查文件夹路径是否正确、文件名匹配规则是否写对 |
| 文件操作报“访问被拒绝” | 检查文件是否被占用、是否有写入权限 |
| 重命名后文件不见了 | 检查新文件路径是否写对了目录 |
| 移动文件后原位置还有 | 用的是“拷贝”不是“移动” |
| 子文件夹里的文件没处理到 | 检查是否勾选了“查找子文件夹” |
| 批量操作时流程卡死 | 文件数量太多,建议分批处理 |
推荐资源
- 影刀官方帮助文档搜索“文件与文件夹自动化”
- 影刀官方帮助文档“获取文件列表”、“文件重命名”、“移动文件”等指令详情
- 影刀官方帮助文档“魔法指令-批量创建带顺序的文件夹”
- 影刀官方帮助文档“魔法指令-批量压缩图片文件”
- 影刀社区搜索“文件批量重命名”或“文件分类”,有大量实战案例
- CSDN搜索“影刀RPA 文件批量重命名”,有小白的详细图文教程
#影刀RPA #RPA自动化 #文件处理 #批量重命名 #办公自动化 #数据整理
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。如果这篇文章对你有帮助,欢迎点赞收藏,下一篇我们聊“图片批量处理与压缩的完整方案”。
