把重复操作交给脚本:自动化入门
每天重复做的事情里,总有一部分是机器可以代劳的:整理下载文件夹、批量重命名、定时备份、把几十个表格合并成一个。自动化的门槛比大多数人想象的低,真正的难点不是写代码,而是判断哪些事值得自动化。
一、先算一笔账
有个流传很广的判断标准:如果一件事每天做一次、每次一分钟,一年就是六小时;花两小时写个脚本是划算的。但这个算法忽略了两项成本:脚本的调试时间和后续的维护时间。实际经验是,一个脚本写完到稳定运行,往往要花初次预估的两到三倍时间。
所以更保守的判断标准是:
- 这件事每周至少做三次,或者
- 这件事一次要做很久(比如批量处理两百个文件),或者
- 这件事容易出错,人工做的时候需要高度集中注意力(比如按规则重命名,错一个就麻烦)
只满足"有点烦"这一条的,先别写脚本。偶尔手动做一次,比维护一个半年才用一次、用的时候还发现挂了的脚本更省事。
二、Windows 上最容易上手的三条路
批处理(.bat):适合简单的文件操作和程序启动。新建一个文本文件,改后缀为 .bat,双击运行。比如把桌面上所有 PDF 移到指定文件夹:
@echo off
move "%USERPROFILE%\Desktop\*.pdf" "D:\文档\PDF归档\"
echo 完成
pause
PowerShell(.ps1):能力强得多,能处理文本、调用系统接口、操作注册表。比如给一个文件夹里所有 jpg 加上日期前缀:
$dir = "D:\照片\待整理"
Get-ChildItem -Path $dir -Filter *.jpg | ForEach-Object {
$newName = $_.LastWriteTime.ToString("yyyy-MM-dd") + "_" + $_.Name
Rename-Item -Path $_.FullName -NewName $newName
}
首次运行 .ps1 可能会提示执行策略限制,这是系统的安全设计。可以在管理员权限的 PowerShell 里把当前用户的策略调整为允许本地脚本,但在调整任何安全设置前,先确认你理解它的含义。
任务计划程序:Windows 自带,负责"什么时候跑"。把上面写好的脚本挂上去,设置每天早上九点、或者每次登录时执行。这是把一次性脚本变成长期自动化的关键一步。
三、不写代码也能自动化的部分
不是所有自动化都需要脚本。
- 软件自带的规则功能:邮件客户端的收件规则、云盘的自动同步文件夹、截图工具的自动保存路径,这些配置好之后就是自动化。
- 表格里的公式和批量填充:很多"手工整理数据"的活,用查找替换、分列、数据透视就能解决,不需要写程序。
- 文本编辑器的多光标和正则替换:处理几百行格式相似的文本时,比写脚本还快。
顺序应该是:先找现成功能,再考虑写脚本。自己写的东西都是要维护的。
四、写脚本的几个基本原则
先手动跑一遍完整流程,把每一步记下来。没想清楚就动手写,会在中途反复推翻结构。
从只读操作开始验证。要批量重命名?先写一个只打印"我将把 A 改成 B"但不实际执行的版本,看输出对不对,确认无误再放开真正的操作。PowerShell 里很多命令支持 -WhatIf 参数,专门用来做这种预演。
Get-ChildItem -Filter *.tmp | Remove-Item -WhatIf
在副本上测试。复制一份测试数据到临时目录,脚本在那里跑通了再动真实文件。
加注释。三个月后你会完全忘记这个脚本在干什么。开头写清楚:用途、输入什么、输出什么、什么时候写的。
留日志。让脚本把处理了哪些文件写进一个文本文件,出问题时才有据可查。
五、必须警惕的坑
删除操作要格外小心。批量删除写错一个路径,后果不可逆。建议凡是涉及删除的脚本,一律先改成"移动到回收目录",确认几天没问题再考虑真删。
路径里的空格和中文。路径带空格必须加引号,否则会被拆成两个参数。这是新手最常踩的坑。
通配符范围过大。. 这类写法在错误的目录下执行会造成灾难。养成习惯:路径写绝对路径,不依赖"当前目录"。
不要运行来路不明的脚本。网上抄来的脚本,看不懂的部分不要执行。尤其警惕那些要求管理员权限、要联网下载、或者对系统目录做修改的内容。
自动化不能替代备份。任何批量操作前,重要数据先备份。脚本是工具,不是保险。
结语
自动化的收益是复利式的:今天写的一个小脚本,可能在接下来两年里每天替你省几分钟。但前提是选对了对象、写得足够简单、并且你还看得懂它。从最烦、最重复、最不容易出错的那一件事开始,一次只自动化一件。