4 步 · 4 段可复制提示词 · 约 9 分钟读完
站内精选
核心结论

80 个文件夹命名各写各的。做法是四条判定替代正则、dry-run 出计划、按风险抽查 20 条、写 manifest 再执行。80 分钟完成:12 个已合规保留、68 个改名成功;抽查查出 3 处错,dry-run 揪出 2 处重名冲突。回滚已演练。

80 个项目文件夹,命名规则各写各的:日期有 20260312 也有 2026.3.12,名字里混着空格和全角括号,十几个带「-副本」「(1)」的重复后缀。要统一成「日期_客户简称_项目名」。手改一遍要两小时且必错,这次让脚本做,80 分钟跑完,其中 20 分钟花在抽查上——那 20 分钟查出 3 处错,避免了 68 个文件夹里 12 个改坏。

一句话结论

批量改名的关键不在写脚本,在「先出计划、抽查、再动手」这个中间步骤,以及一个能一键退回的记录文件。所以流程是先 dry-run 出改名计划、人工抽查计划、确认无误才执行、执行前先写旧名新名对照表。跳过前两步,一次跑错就要挨个手动改回来,80 个文件夹改回原样比改一遍更累。

这篇解决什么问题

三种情况最常见。一是直接跑脚本改名:看着规则很清楚,跑完发现有一部分日期取错了(取的是项目结束日而不是开始日),想退回却不知道原名是什么。二是规则靠正则一条条套:日期写法有七八种,正则写不全,漏掉的直接跳过,跑完发现还有一堆没改。三是忽略重名冲突:两个文件夹改成同一个名字,后一个覆盖前一个,数据直接丢。

根子是把批量改名当成「字符串替换」。它实际是一次有副作用的数据迁移:每个动作都要能撤回,每个判断都要能复核。想清楚这两点,剩下的只是写几十行代码。

开始前要准备什么

  • 完整目录清单,含每个文件夹里的文件数——改名后要用文件数核对有没有漏。
  • 客户名映射表:全称到简称的对照,这次 23 条。缺一条就会有一个文件夹改不出来。
  • 命名规则四条:日期格式、去掉哪些字符、客户简称、重复后缀怎么处理。写死,不要临场判断。
  • 一条纪律:先 dry-run,只输出计划不动文件。这条不能省,省了就是拿真实数据试错。

具体怎么做

第一步:把规则写成四条判定,不写正则

规则要写成「输入长什么样、输出长什么样」的判定,而不是一条正则。这次四条:日期统一成 8 位数字(识别 2026.3.12、2026-03-12、20260312 三种写法)、去掉空格与全角括号等符号、客户名替换成映射表里的简称、去掉结尾的「-副本」「(1)」「_final」这类重复后缀。

写规则 15 分钟。这一步的价值在于把「我大概知道该怎么改」变成「四条明确判定」,每条都能单独验证。如果规则里有「大概」「看情况」,说明还没想清,先别动手。

这是 80 个文件夹的名称清单(含路径、文件数、修改时间)与命名目标格式「日期_客户简称_项目名」。

请帮我:
1. 把命名规则拆成可执行的判定条目(日期识别、符号清理、客户名替换、后缀去除),每条说明输入形态与输出形态;
2. 指出清单里有哪些名称不符合任何一条规则(无法处理),单独列出;
3. 指出可能产生重名冲突的组合(两个不同文件夹改名后相同)。

要求:规则要能逐条验证,不要写“按常规习惯处理”这类模糊描述;无法处理的单独列,不要猜。

第二步:先跑 dry-run,只输出计划

dry-run 只打印「旧名 → 新名」,不动文件。这次 80 个里 12 个已合规(原样保留),68 个需要改。跑 dry-run 15 分钟,主要时间在等它逐个检查而不是执行。计划要输出成表格:序号、旧名、新名、命中哪条规则、是否有冲突。

dry-run 还查出 2 处重名冲突——两个不同项目的文件夹简称相同、日期相同,改名后会撞在一起。这种情况脚本不能自己决定,必须中止并标出来。冲突不处理就执行,后一个会覆盖前一个,里面的文件就没了。

这是目录清单与四条命名规则。请生成改名计划(dry-run,不执行):

1. 输出表格:序号、旧名、新名、命中规则、是否合规(无需改名)、是否有重名冲突;
2. 对每个改名给出原因(哪条规则导致改动);
3. 单独列出重名冲突项,给出候选处理方式(加序号、加项目代号、保留原名)。

约束:只输出计划,不修改任何文件;合规的文件夹必须原样保留,不要为了统一而改动。

第三步:抽查 20 条,专挑难的

抽查 20 分钟,68 条里抽 20 条,抽法要挑难的:日期写法怪的、客户名最长的、带重复后缀的、名称最短的。查出 3 处错:2 处是客户简称映射表里没这条(脚本按原名保留,结果格式不统一),1 处日期取成了项目结束日而不是开始日。

3 处错对应的修法不一样。映射缺失要补映射表(补 2 条),日期取错要改判定(取名称里第一个出现的日期,而不是最后一个)。如果不抽查,这 3 处会混在 68 个里,事后很难发现——因为改完的名字看着都合规,只是客户名或日期错了。

这是改名计划(68 条)与客户简称映射表(23 条)。

请帮我抽查设计:
1. 从 68 条里挑出 20 条最可能出错的(按风险排序:日期写法特殊、客户名含特殊字符、带重复后缀、名称极短或极长);
2. 对每条说明它为什么被挑中、可能出现什么错;
3. 给出判定标准:改后的名字要满足哪几个条件才算对。

要求:抽查要覆盖所有规则分支,不要随机抽;列出每条的风险类型。

第四步:写对照表,执行,验证,可回滚

执行前先写 manifest:一行一条「旧名 → 新名」,存成文件。有了它,回滚就是读文件反向执行,5 分钟能全退回。执行本身只花 5 分钟(68 个文件夹,基本是瞬间完成)。

验证 10 分钟,两个判据:一是文件数,每个文件夹改名后里面的文件数必须和清单一致;二是重名,跑完检查有没有两个文件夹同名。这次 68 个全部通过,文件数一致,无重名。剩下 12 个合规的没动。

这是改名计划(已修正 3 处错误)与客户简称映射表。

请帮我写执行与回滚方案:
1. 执行前的校验清单(冲突检查、已存在检查、权限检查);
2. 输出 manifest 的格式(旧名、新名、原名文件数、执行时间、状态);
3. 回滚脚本的逻辑(读 manifest 反向执行,遇到新名不存在或旧名已存在时怎么处理)。

要求:manifest 必须能独立支撑回滚,不依赖其他日志;回滚要能只退一部分(按序号)。

实测记录

素材是 80 个项目文件夹。写规则 15 分钟、跑 dry-run 15 分钟、抽查 20 分钟、修映射与判定 15 分钟、执行 5 分钟、验证 10 分钟。合计 80 分钟。

结果:80 个里 12 个已合规原样保留、68 个改名成功。抽查 20 条查出 3 处错(映射缺失 2、日期取错 1),修正后二跑 68 条全部正确。dry-run 阶段还发现 2 处重名冲突,其中一个加了项目代号区分,另一个确认是同一项目的两个版本、保留了原名。

回滚验证:拿 1 个文件夹演练了一次回滚,manifest 反向执行一次成功,文件名与文件数都回到原样。这一步单独做的价值在于——真正需要回滚的时候,你不会想现场调试脚本。80 分钟里只有 5 分钟是真正在改文件,其余都是准备和验证。

最容易错的 3 个地方

第一,不写 manifest 就执行。改名是覆盖性操作,原名一旦丢掉就找不回。有 manifest 才能回滚,没 manifest 只能靠记忆拼。这次 manifest 是一行一条的纯文本,回滚脚本 20 行,演练过才敢真跑。

第二,不查重名冲突。两个文件夹改成同一个名字,后一个覆盖前一个,里面的文件直接消失,而且不报错。dry-run 必须单列冲突项,脚本遇到冲突要中止,不能自己加后缀——加后缀这种决定得人来定。

第三,抽查只抽简单的。抽 20 条如果全抽格式规整的,一定全对,等于没抽。要按风险排序抽:日期写法怪的、客户名最长的、带后缀的。这次 3 处错全部出在这几类里,随机抽大概率抽不到。

可复用的东西

四条判定替代正则:日期、符号、客户名、后缀各一条,每条能单独验证。

dry-run 出计划:只打印旧名与新名,不动文件,含合规标记与冲突标记。

按风险抽查:挑特殊的 20 条,覆盖所有规则分支,不随机。

manifest 支撑回滚:一行一条旧名新名,可按键只退一部分。

文件数验证:改名后每个文件夹内的文件数必须与清单一致。

常见问题解答

为什么不能直接跑脚本改名

改名是覆盖性操作,原名丢掉就找不回。这次要是有 12 个文件夹的日期取错了(取的是项目结束日而不是开始日),没有旧名新名对照表就只能靠记忆拼。所以必须先 dry-run 出计划、抽查、写 manifest,最后才真跑。

重名冲突为什么要让人定

因为脚本猜不出哪一个是正确的。这次 2 处冲突,一处是两个不同项目简称日期都相同,加项目代号区分;另一处查下来是同一项目的两个版本,保留原名更合适。脚本自动加后缀会把第二种情况改坏,所以遇到冲突必须中止。

抽查 20 条应该怎么抽

不随机,按风险排序抽:日期写法怪的、客户名最长的、带重复后缀的、名称极短的。这样才覆盖到所有规则分支。这次 3 处错(映射缺失 2、日期取错 1)全部出在这几类里,随机抽大概率抽不到。

回滚为什么要提前演练

真正需要回滚的时候你不会想现场调试脚本。这次单独拿 1 个文件夹演练了一次,manifest 反向执行一次成功,文件名与文件数都回到原样。80 分钟里只有 5 分钟在真改文件,其余都是准备和验证,这是有意的配比。

小程序阅读免费
微信扫码进入小程序,按岗位找 AI 实操步骤
微信扫码进小程序
按岗位找 AI 实操步骤 · 提示词可收藏

发表回复

后才能评论