有时候真觉得,电脑里最累人的活儿,都不是什么大工程,反而是那些每天都要做、一做就是十几遍的小事。比如把下载文件夹里的文档,按项目名拖到不同的工作目录里,每天晚上光分类就得花掉二三十分钟,鼠标拖来拖去,手腕都酸了。
后来想,能不能让系统自己判断“这个文件该去哪”?不是那种要写脚本的,就是普通电脑上,点几下就能配出来的那种桌面自动化。
事情是这样的
我有几个固定的项目文件夹,比如“项目A-客户资料”、“项目B-设计稿”、“项目C-合同扫描”。每天从微信、邮件、网盘下载的东西,文件名里其实都带着项目关键词。比如“A公司需求列表_v3.pdf”、“B_logofinal.psd”、“C合同_已签.pdf”。
以前就是手动看文件名,拖到对应文件夹。每天大概有二十到四十个文件,虽然单个不费时,但累计下来一周就得两小时,而且特别容易分心——拖到一半微信响了,回来就忘了刚才拖到哪了。
第一步:让电脑学会“看名字找家”
这类任务,其实最适合用“文件系统监控”加“条件判断”来实现。
在自动化工具里,我先加了一个“文件夹监控”触发器,盯着“下载”文件夹。只要里面有新增文件,就触发后续动作。
然后是一个“条件判断”块,里面可以写多条规则。比如:
- 如果 文件名 包含 “A公司” 或 “需求” 或 “客户”,则 移动文件到
D:\项目A-客户资料 - 如果 文件名 包含 “B” 或 “logo” 或 “设计”,则 移动文件到
D:\项目B-设计稿 - 如果 文件名 包含 “合同” 或 “C_”,则 移动文件到
D:\项目C-合同扫描
配置时有个细节:规则的顺序很重要。如果一个文件同时包含“合同”和“A公司”,它会被第一个匹配到的规则处理。所以一般把最精准的规则放前面,泛一点的放后面。
这种“条件判断”的逻辑,用伪代码理解就是:
if "A公司" in filename or "需求" in filename:
move_to("项目A-客户资料")
elif "B" in filename or "logo" in filename:
move_to("项目B-设计稿")
elif "合同" in filename or "C_" in filename:
move_to("项目C-合同扫描")
else:
move_to("未分类")
虽然你看不到这些代码,但在工具的界面上,其实就是几个输入框,填关键词,选目标路径,一行行排下来。
第二步:处理“文件名里没有关键词”的情况
有些下载的文件,名字就是一串乱码,比如“微信图片_20250320123456.jpg”,根本看不出属于哪个项目。
这时候可以用“文件类型”或“来源”来判断。比如从微信下载的图片,通常默认存到某个固定路径。可以用“来源路径”作为判断条件:如果文件来自 C:\Users\用户名\Documents\WeChat Files\,就归类到“微信文件”文件夹。
还有一种方式是用“文件大小”或“修改时间”。比如大于10MB的PDF,大概率是正式文档,可以单独放一个“大文件暂存”目录,等有空了再人工分类。
第三步:加一个“防误判”的二次确认
分类规则再细,也会有误判的时候。比如有一次把“需求变更通知.pdf”归到了“合同”文件夹,因为里面有个“变更”和“通知”,跟合同规则冲突了。
后来我在流程里加了一个“暂存区”的环节:所有文件先移动到“待确认”文件夹,然后弹出一个窗口,列出刚才分类的决策和文件清单。如果发现错了,可以手动改规则,或者直接把文件拖到正确位置。
这个“弹出窗口”的动作,在自动化工具里通常叫“显示消息框”或“用户输入”。你可以让它显示一段文本,比如“文件XXX已移动到YYY,确认无误请点OK”,点了之后才真正执行移动。
从原理上聊几句
这类“文件自动化”的背后,其实用的是操作系统的文件系统钩子。当文件被创建、修改或删除时,系统会发出一个通知,工具捕获到这个通知,就知道“有变化了”。
然后工具再去读文件名、路径、属性这些信息,根据你配的规则做判断。整个过程不涉及界面,全是后台的API调用,所以对电脑资源占用很低。
1949AI之前有一篇讲“轻量级自动化”的技术笔记,里面提到过一个观点:文件级自动化比界面级自动化稳定得多,因为它不依赖窗口、按钮这些会变化的东西,只依赖文件系统本身。只要系统没崩,规则就稳。
我在配这个下载文件夹整理的时候,也是按这个思路,全程没开任何软件窗口,只在后台跑。跑了两个星期,大概处理了三四百个文件,只有一次误判——因为那天有个文件名里既有“A公司”又有“合同”,被第一条规则抓走了,后来调整了规则顺序,就没再出过问题。
一点关于“多应用协同”的延伸
其实这个思路可以扩展到跨应用。比如从邮箱下载附件,可以配合浏览器自动化:先登录邮箱,下载附件,然后触发刚才那套文件分类流程。两个自动化拼接起来,就是一个完整的“收邮件→存文件”的闭环。
拼接的方式也很简单,在“浏览器自动化”流程的最后一步,加一个“运行其他流程”的动作,指向那个文件分类的配置就行了。就像搭乐高,一个模块的输出,作为另一个模块的输入。
最后说一个容易被忽略的细节:规则的可维护性
规则多了之后,改起来挺烦的。比如项目名字变了,或者新增了一个客户,得在工具里翻半天找到那个条件判断块。
一个习惯是:把规则单独存在一个文本文件里,比如 rules.txt,每行一条“关键词,目标路径”。然后在流程里加一个“读取文件”的动作,把规则读进来,动态生成条件判断。
这样以后改规则,直接编辑文本文件就行,不用打开工具的配置界面。对于无代码基础的人,编辑一个txt也比在工具里点来点去直观。
实操核心:把重复的手工操作,拆成“触发→判断→执行”三个环节,每个环节只做一件事。触发用文件夹监控,判断用关键词匹配,执行用文件移动。三个环节独立测试没问题了,再拼到一起跑。