核心思路:区分任务类型 → 选合适工具 → 配置触发条件 + 执行动作 → 日志+兜底,优先零代码,再到少量脚本,适合个人/小团队日常重复工作(文件整理、通知、备份、填表、消息推送、定时汇总等)
方案A:零代码首选(推荐新手,Windows/Mac/手机都能用)
工具栈
- 电脑端:AutoHotkey(Windows)、Keyboard Maestro(Mac)、IFTTT、Make(Integromat)、滴答清单自动化、飞书/钉钉自动化流程
- 网盘/文件:阿里云盘自动同步、OneDrive自动备份
- 移动端:Tasker(安卓)、快捷指令(iPhone)
适用任务
定时提醒、文件归类、自动发消息、表单收集、网页填表、截图归档、闹钟+推送、网盘备份
标准流程模板
- 触发(什么时候跑)
- 定时:每天8:30、每周一、每月1号
- 事件触发:文件放到指定文件夹、打开某个软件、收到邮件、扫码、连指定WiFi
- 执行动作(做什么)
- 文件:移动/重命名/压缩/上传
- 通知:微信/钉钉/邮件推送摘要
- 操作:打开网站、粘贴模板文字、截图
- 兜底设置
- 失败推送提醒、简单日志(记录什么时候跑、成功/失败)
- 示例:每天下班自动备份桌面文件到网盘
- 触发:18:00
- 动作:把桌面指定文件夹复制到同步盘 → 发送钉钉消息:今日备份完成
- 异常:复制失败就发告警
优点:不用写代码,拖拽配置;缺点:复杂循环、读写Excel大数据会受限
方案B:轻量脚本方案(适合Windows,自由度更高,简单易学)
工具栈
Python + 任务计划程序(Windows) / cron(Mac Linux) 可选库:
watchdog:监控文件夹变化openpyxl:自动读写Excelsmtplib:发邮件requests:调用网页接口推送消息(钉钉/企业微信机器人)
适用任务
Excel自动汇总、爬虫简单抓取数据、批量重命名、定时导出报表、日志清洗
结构(极简架构)
├─ auto_task.py # 主脚本
├─ config.json # 配置文件:时间、路径、机器人地址、开关
├─ log.txt # 运行日志
└─ run.bat # 一键启动脚本,给计划任务调用
Windows配置:系统【任务计划程序】新建任务,定时调用 run.bat
示例逻辑:监控download文件夹,出现PDF自动移动到【PDF归档】文件夹,记录日志
优点:成本低、灵活;缺点:需要懂一点点Python基础,电脑保持开机才能跑
方案C:云端自动化(不用本地电脑一直开机,适合线上任务)
工具栈
飞书多维表格自动化 / 钉钉宜搭 / Make / 腾讯云函数、阿里云函数计算
适用
线上表单自动汇总、定时拉取数据、消息推送、周报定时发送
触发:cron表达式定时、表单新增一条记录、webhook回调
优点:7×24运行,不用电脑常开;缺点:免费版有额度限制
统一通用规范(不管哪个方案都建议加上)
- 开关控制:可以临时关闭自动化,避免误操作
- 白名单:文件自动化一定要加后缀白名单(只处理 .xlsx/.pdf,不随意移动系统文件)
- 先测试:全部自动化动作先加【测试模式】,只打印日志、不真实修改文件
- 防重复:增加标记文件/记录ID,防止同一任务反复执行
- 权限最小化:脚本不要用管理员权限运行
快速选型对照表
| 需求 | 推荐方案 |
|---|---|
| 手机自动任务 | iPhone快捷指令 / 安卓Tasker |
| 简单文件整理、定时备份 | A方案 AutoHotkey / 系统定时+网盘 |
| Excel报表、批量数据处理 | B方案 Python脚本 |
| 周报推送、表单流转、不想电脑开机 | C方案云端自动化 |
给你一个可直接落地的示例(Python文件自动归档)
import os, shutil, logging
# 配置
WATCH_FOLDER = r"C:\Users\XXX\Downloads"
TARGET_FOLDER = r"C:\Users\XXX\文档\PDF归档"
SUFFIX = {".pdf"}
# 日志
logging.basicConfig(filename="auto_log.txt", level=logging.INFO, format="%(asctime)s %(message)s")
def move_pdf():
for f in os.listdir(WATCH_FOLDER):
fp = os.path.join(WATCH_FOLDER, f)
if os.path.isfile(fp) and os.path.splitext(f)[1].lower() in SUFFIX:
try:
shutil.move(fp, os.path.join(TARGET_FOLDER, f))
logging.info(f"已归档:{f}")
except Exception as e:
logging.error(f"失败 {f}:{e}")
if __name__ == "__main__":
move_pdf()
然后放到Windows任务计划,每天固定时间运行一次下载目录PDF归档。
