# 用 Shortcuts 批量修复 %E4%B9%B1 类型的文件名乱码

> 本文公开全文。

原文：https://utgd.net/article/20110

下载文件或打开压缩包后，时常遇到 %E4%B9%B1%E7%A0%81 形式的文件名乱码。此问题似乎非常普遍，因此在几年前，我曾约涔君专门撰文。原文从原理到方案巨细靡遗，惟操作系统几经更迭，目前可能无法直接使用；而修改代码毕竟有一些门槛，非人人能及。

我在此另寻蹊径，借助 Shortcuts 修复文件名乱码，无需乞援代码，或许也是一条捷径。你可以在下面下载 Shortcuts 动作，也欢迎关注我的 GitHub，以第一时间获得更新消息。

Shortcuts 动作下载

## 动作使用

在使用本文动作之前，请先在 Shortcuts 应用中打开它，检查是否将其作为 Quick Action 并勾选“Finder”选项，以确保它可以正常出现在文件的上下文菜单（右键菜单）中。

使用时可以选中单个文件，也可以批量选择，在上下文菜单的“Quick Actions”中找到本动作——Filename Fix %，然后点击运行。

随后 Shortcuts 会检查每一个文件的名称，如果发现 %E4%B9%B1 类型的乱码，就会自动将其修复，同时跳过不包含乱码的文件。

在执行重命名操作之前，如果当前文件夹是第一次处理，Shortcuts 还会要求权限，这是 Shortcuts 的已知限制，即便它是原生软件，也需要每次遇上新文件夹时重新授权。

## 原理简析

我此前写过一篇批量重命名文件的文章，而修复文件名其实也是一种重命名操作，因此两个动作的框架大体相同。不同之处至于在于，之前是手动输入重命名前后的字符，而此番则是自动尝试修复乱码。

所谓的“乱码”实则不乱，而是经过 URL 编码的文本，只要反过来解码即可获得人类可读的文件名。文件在网络传输中常常被编码，以免在不支持中文的服务器上出错，因此留下了很多 %E4%B9%B1 类型的“乱码文件”。

本文动作分为准备部分和执行部分，前者用于生成一则包含重命名前后对比的提醒。之所以必要，是因为通过 Shortcuts 执行的重命名操作不可逆，因此需要谨慎操作，避免盲操作。完整处理流程如下：

- 逐个获取文件名；

- 尝试将每个文件名解码，如果变动后的文件名与原名有异，一般就说明确实是 %E4%B9%B1 型乱码，此时将其放入“有变动”的列表；

- 反之，若尝试解码前后文本并无改动，则证明其不是 %E4%B9%B1 型乱码，这时候就存入“未变动”的列表；

- 展示将被重命名的文件以及不会变动的文件，供用户确认；

- 确认无误后，开始重命名文件，即修复文件名中的乱码。

## 小结

在写《如何用 Shortcuts 和正则表达式批量重命名文件》时，我就感叹 Shortcuts for macOS 没有物尽其用，多数网站只是在吃 Workflow（Shortcuts 前身）时代的老本。Shortcuts for macOS 拥有大量文件相关模块，在继承现成图形化模块的同时又支持 AppleScript 和 Shell 脚本，理应在文件自动化领域一展拳脚；既然鲜有人涉足，鄙人就不装客气。

诚然，Shortcuts 能做的，传统的自动化工具——Automator、Alfred、LaunchBar 以及 Keyboard Maestro 等等——当然不在话下，而 Shortcuts 的价值则在于把事情变得更简单，通常不需要编写脚本，只要像堆积木一样组合一下现有模块，就能拿出实用的动作。写 Shortcuts for macOS 主题的文章，也就不是用 Shortcuts 重复造一遍旧轮子，而是用更轻松的方式设计工具。

UNTAG 持续关注 Shortcuts for macOS，除了几篇拙作，Hum 也写过批量处理文件夹的文章，之后我们也策划了多篇文章，希望多少能给 Shortcuts 社区做点贡献。

---

[前往标准阅读页](https://utgd.net/article/20110?audience=web)
