Windows 批量文件自动化处理器
这是什么
专治"文件夹里有几百个文件要整理"这种重复性手残操作。
用户用大白话说出需求("把下载文件夹里所有照片按拍摄日期改名""把所有 .txt 转成 .md 并按月份归类"),本 skill 生成一份可直接运行的 Python 脚本,并且具备三项安全设计:
- 预览模式(dry-run):先列出"将要发生的每一步",确认无误再真执行
- 撤销日志:每次真实执行都记一份 JSON 操作日志,一条命令完整回滚
- 异常保护:单文件失败不中断整体,失败项单独记录不丢数据
一句话:让批量文件操作像"撤销键"一样安全。
何时使用
- "把这个文件夹里几百个文件按规则重命名"
- "把散乱的下载文件夹按类型/日期自动归类"
- "把所有 Word 转 PDF""把所有图片压缩一遍""批量加水印"
- "找出所有大于 100MB 的文件并移动到别处"
- "删除三个月前的临时文件"(带确认与撤销)
核心工作流
第 1 步:问清四要素
必须明确后才生成脚本(缺一不可):
| 要素 | 说明 | 示例 |
|------|------|------|
| 源目录 | 要处理哪个文件夹 | D:\下载 |
| 文件筛选 | 哪些文件(扩展名/大小/日期/正则) | *.jpg 且 >1MB |
| 动作 | 改名 / 移动 / 复制 / 转换 / 删除 | 按拍摄日期改名 |
| 目标规则 | 新名字或新位置的规则 | 假期_{YYYYMMDD}_{序号}.jpg |
第 2 步:生成脚本(用 scripts/file_automation.py)
脚本自带三种模式:
python file_automation.py plan # 预览:列出将要发生的每一步(不真动)
python file_automation.py run # 执行:真实操作 + 写撤销日志
python file_automation.py undo # 回滚:按最新日志完整还原
第 3 步:先预览,再执行
铁律:任何真实执行前必须先跑 plan,把预览结果给用户看,得到确认再 run。
第 4 步:报告
执行完输出统计:成功数 / 跳过数 / 失败数(含失败原因),并告知撤销日志路径。
内置能力清单
脚本 scripts/file_automation.py 支持的动作类型:
| 动作 | 说明 | 典型场景 |
|---|---|---|
rename |
按模板批量改名(支持 {日期}{序号}{原名}{扩展名} 等变量) |
照片按拍摄日期改名 |
organize |
按日期/类型/首字母自动建子目录并归类 | 下载文件夹大扫除 |
move / copy |
按筛选条件移动或复制 | 大文件归档 |
convert |
格式转换(图片压缩/转码、文本编码转换) | jpg→webp、gbk→utf8 |
delete |
删除(强制二次确认 + 可撤销) | 清理临时文件 |
支持的筛选条件:扩展名、文件名正则、大小区间、修改/创建时间区间、是否包含子目录。
可用变量(改名/归类模板)
| 变量 | 含义 | 示例输出 |
|---|---|---|
{name} |
原文件名(不含扩展名) | IMG_2031 |
{ext} |
扩展名(含点) | .jpg |
{date} |
修改日期 YYYYMMDD | 20260909 |
{Y} {m} {d} |
年/月/日 | 2026 09 09 |
{size} |
文件大小(MB,两位小数) | 3.42 |
{seq} |
自增序号(可设位数) | 001 |
{parent} |
父目录名 | 下载 |
安全边界(必须遵守)
- ✅ 只操作用户明确指定的目录,绝不擅自动系统目录、用户主目录、其他盘根目录
- ✅ 删除操作:必须先 plan 预览 + 用户显式确认 + 写入撤销日志,三步缺一不可
- ✅ 不覆盖同名文件:默认自动加后缀
_1,除非用户明确要求覆盖 - ❌ 不做:绕过权限访问他人文件、操作回收站/系统还原点、任何
rm -rf类无日志删除 - ❌ 不做:未经确认的批量删除、对非用户目录的递归操作
输出规范
给用户的结果必须包含:
1. 脚本文件(完整可运行,带中文注释)
2. 预览摘要(表格:原路径 → 新路径,超过 20 条只列前 20 并说明总数)
3. 撤销方式(明确写出 python file_automation.py undo 及日志路径)
4. 风险提示(若涉及删除/覆盖,用醒目方式标注)
示例对话
> 用户:我下载文件夹里几百张照片,名字都是 IMG_xxxx,想按拍摄日期改成"假期_20260909_001.jpg"这样
正确做法:
1. 确认四要素:源=D:\下载,筛选=*.jpg,动作=rename,规则=假期_{date}_{seq}.jpg
2. 生成脚本并先跑 plan,输出预览表给用户
3. 用户确认后 run,报告结果 + 撤销方式
> 用户:把所有 txt 文档的编码从 gbk 转 utf8
正确做法:源目录 → 筛选 *.txt → 动作 convert(编码转换)→ 预览 → 执行。转换前自动备份原文件。