一上来就开全自动:清理脚本把待整理的文件一起送走
很多人第一次写自动化脚本,都是被一堆乱七八糟的文件逼出来的。桌面上、下载目录里堆了几百个文件,手动整理太慢,于是让脚本按扩展名或修改时间批量移动、批量删除。脚本跑完那一刻确实爽,目录干干净净,像是白捡了半天时间。问题在于,这类脚本真正危险的地方不是它做了什么,而是它一次性做了太多、太快。
我见过最常见的事故,是把「待整理」的文件夹也划进了清理范围。脚本的规则写的是「移动某目录下所有临时文件」,但那个目录里恰好还躺着几个你正在处理、还没命名好的文件。它们同样符合规则,于是被一起送进了归档目录,甚至直接被删。等到你回头找,已经不知道被挪到哪个层级下面去了。还有一种更隐蔽的:脚本按文件名匹配,而你的临时文件命名习惯恰好命中了排除词,结果连备份都没留下。
正确做法其实不复杂,就是先让脚本只打印,不动手。把「匹配到什么、准备移到哪里」输出成一份清单,你自己扫一遍再决定要不要执行。清理类的脚本尤其应该这样,先跑一遍空转模式,确认没有误伤,再放开动作。另外,动手前把目标目录完整复制一份到别处,成本很低,但能救回的东西往往超出预期。
设成静默运行,出错时没人知道,发现已是几天后
静默运行是另一个看着省事的习惯。脚本扔进计划任务,不弹窗、不提示、不留日志,后台默默跑着。写的人图的是「不打扰」,觉得反正跑成功了也用不着看它。可自动化最怕的恰恰是沉默——它成功了不吭声,失败了也不吭声,你就失去了判断它到底有没有在干活的能力。
实际情况往往是这样的:某天你发现某个同步目录空了,或者某份数据没更新,回头去查,才知道脚本从几天前就开始报错。可能是某个源文件被移走了,可能是权限变了,也可能是网络断了。因为没有任何痕迹,你连它第一次失败是哪天都说不清。这时候省下的那点「不被打扰」的清净,代价是几天的数据缺口,以及一段根本没法还原的影响范围。
所以静默可以,但要留一条你能看到的失败出口。至少让脚本在出错时写一行记录,写进一个你偶尔会翻的文件里;或者让它在连续失败时给自己发一条提醒。日志不用多漂亮,关键信息够了就行:什么时候跑的、处理了几个文件、哪一步出了什么问题。多数情况下,你并不需要实时盯着,只需要在它出问题时能被叫醒。
本地改过的版本被云端旧版悄悄覆盖
同步类脚本和自动备份是最容易吃这个亏的地方。你本地改了一份文档,写得正顺,脚本按计划把云端版本拉了下来,覆盖了本地那份。等你再打开,发现刚才的修改全没了,时间还和之前一模一样,连冲突提示都没有。
这类问题的根源,是脚本只认「同步」两个字,不认「谁更新」。它不知道本地这份是你刚改的,只知道自己该把某个方向的文件搬过去。双向同步尤其容易出事,因为你以为它会合并,实际上它经常只是单向覆盖。更麻烦的是,被覆盖往往发生在你不知情的时候,等你意识到,可能已经过了好几个版本。
比较稳妥的做法是把同步分成两类处理:一类是纯分发,比如模板、素材、公共资料,从一处推到多处,这类可以自动化;另一类是你会手动编辑的内容,同步前先留出冲突副本,或者干脆改成手动触发。还有一个简单的习惯很有用——重要文件在动手改之前,先确认同步任务没在跑,或者先把改动另存一份带时间的副本。多数同步工具会提供「保留两个版本」的选项,打开它,比事后找文件省心得多。
把一次性的临时需求写成长期自动规则,越跑越乱
还有一种坑,来源不是脚本写错了,而是需求本身变了。你为了处理某次活动的一批素材,写了个按日期归档的规则,活动结束就忘了关。几个月后,它还在跑,把不该归档的新文件按同样的逻辑塞进了旧目录。规则本身没错,错在它被当成了长期制度。
临时需求和长期规则的判断标准其实很简单:这件事会不会重复发生,频率大概多少。如果只是这一次、这一批,那就是一次性任务,做完就该停掉,别图省事挂进常驻计划。很多「越跑越乱」的局面,都是若干个一次性脚本叠在一起造成的——它们各自都合理,合在一起就互相打架,文件被来回搬运,最后没人说得清哪个目录才是准的。
建议给每个自动化任务留一句备注:它为什么存在、处理什么范围、预计跑到什么时候。定期翻一遍,把已经过期的停掉。这个动作花不了几分钟,但能避免大量「不知道谁在动我的文件」的困惑。
让工具替你做判断之前,先留一道人工确认的口子
回头看这几个坑,共同点其实是同一个:我们把判断也交给了脚本。清理时判断哪些该留、同步时判断哪份更新、归档时判断哪些已过期,这些原本需要人看一眼的事,被压缩成了一条规则。规则跑得越快,判断错得越利索。
所以真正值得坚持的原则,不是「少用自动化」,而是把判断和执行分开。凡是涉及删除、覆盖、批量移动的动作,前面留一道确认;凡是会长期运行的任务,给自己留一条能看见它状态的路。多数情况下,自动化的价值在于执行那些你已经想清楚的重复劳动,而不是替你想清楚。
下一步可以做一件很小的事:打开你现在正在跑的自动任务列表,逐个问三个问题——它动的是哪些文件、失败了我怎么知道、这个需求现在还成立吗。答不上来的那个,先停掉,改成手动跑一次看看。省下来的时间,往往就是这样从别处补回来的。



评论 15
理性讨论,友善发言还没有评论,来说两句吧