# 一键批量转换繁体中文文件名为简体（macOS）

> 本文公开全文。

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

我经常下载到一些繁体命名的文件，虽然看得懂，但后续搜索时为免遗漏，总要简体和繁体都搜一遍，非常不便。例如，我曾下载了一批红烧肉的教学视频，有繁体有简体——有些大陆的账号，上传的视频不知为何也是繁体标题——如果时候搜 红烧肉，显然就漏掉了繁体的 紅燒肉。

其实两岸三地的玩家们，早就制作过各种繁简文件名转换工具，不过碍于两点，结果都不了了之：第一，早年的方案依托第三方库，比如 opencc，一般人用不明白；另一方面，或许是因为繁体中文世界进入互联网较早，这方面的早期玩家也是港澳台朋友居多，偏偏简体到繁体不是函数关系，经常出错（例如把“头发”转成“頭發”），最后效果不佳。

时至今日，繁简转换本身已经成为自动化玩家圈子里的悬案，问题之所以鲜少被提及，只是因为大家逐渐能看懂对方的文字。我也能够熟练阅读繁体中文，但很不幸，计算机不行，这就出现了文章开头所说的搜索障碍。为此，我返回到繁简文件名转换的课题，只考虑对我——简体中文使用者——有意义的繁体转简体，并最终避开了 opencc 等第三方库，遂有此文。

\>\>Keyboard Maestro 动作下载\<\<

本文取道系统内置的繁简转换功能，理论上也可以完成简体转繁体，但前文已经提及，无法确保百分比正确，何况我用不到，故本文刻意避开。惟需注意，不同于一般的功能，原生繁简转换并未提供 AppleScript、Shell 或 Python 接口，许多玩家恐怕也是第一次遇到这三板斧劈不开的难题。不过，macOS 还提供了另一种自动化脚本：Swift Script。

——不用担心，Swift Script 本质上也是一段脚本，如果你也不熟悉 Python \(Script\)，那么 Swift Script 对你而言不过是葡萄牙语和西班牙语的区别。而且，虽然冠着 Swift 的大名，但不需要 Xcode 也能运行 Swift Script，毕竟 macOS 上的几种自动化脚本语言本就可以互相嵌套嘛，只要支持其中一种，基本就能跑其他一切。

不过，我也更喜欢捷径：Keyboard Maestro 自带了运行 Swift Script 的模块，无需再自行编写嵌套模板。思路很简单：

- 逐个获取当前选中的文件；

- 每次处理一个文件，将其文件名转换为简体；

- 然后重命名；

- 依次处理完选中的所有文件。

注意，上述步骤也会把文件路径中的繁体转换成简体，导致重命名时失去目标而失败，但我的电脑上几乎不会出现这种情况，故未继续优化。你可以将文件夹路径和文件名拆开处理，即可避开潜在的对象错误。

我所用的繁体转简体代码如下，如确有必要，可更换 Hant 和 Hans 从而逆向转换。

```
import Foundation

let input = ProcessInfo.processInfo.environment["KMVAR_localMinja"]!
let mutableString = NSMutableString(string: input)
let transform = "Hant-Hans"
if CFStringTransform(mutableString, nil, transform as CFString, false) {
    print(mutableString)
} else {
    print("Conversion failed QAQ")
}
```

依托这个 Keyboard Maestro 动作，即可将选定的文件批量转换为简体名称。

当然，转换的目的，还是在文件管理中简化搜索。如果本就是繁体的严肃作品（例如音乐或书籍），自然不必强扭作简体文字，反之亦然。

---

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