我在分支机构安装并配置了 QNAP TS-463U-RP,以镜像该办事处和总部使用的数据。
在初始同步后的某个时间,我突然发现文件和目录名称中存在特殊字符(可能是 Unicode)。使用默认代码页的 Windows 命令行将它们显示为?
,将代码页更改为例如 1252 则显示这些字符为
。通过 SSH 连接将它们显示为"
。
现在我能使用 SSH 或 Windows 命令行重命名文件(但不使用资源管理器),但这很繁琐。我尝试使用不同的工具(find
Windows Search、一些第三方工具等)搜索目录结构,但无法想出任何模式来自动化该过程。
我的备份是最新的,除了似乎是随机添加的特殊字符文件,我必须修复这些......
我甚至不太知道这些是什么角色。
我确实知道他们在 NTFS 上使用 Mac,也许这与此有关。
那么:我该如何自动重命名文件?更重要的是,我该如何防止文件被重命名/创建?
答案1
在研究了 Unicode 和 Powershell 一段时间后,我偶然发现了这个模块获取Unicode信息。这个模块向我展示了文件名是如何创建的特殊 Unicode 字符 F020
。
所以我在 Powershell 中编写了一个单行脚本:
gci -recurse -Path Z:\ -Exclude Z:\Temp | where {$_.Name -match "[\uF022]"} | rename-item -newname {$_.name -replace "[\uF022]",""}
用空字符串替换 Unicode 字符。
到目前为止一切顺利,但我仍然不知道文件名从何而来。但到目前为止,没有添加新的错误文件。我推测,从/到 Mac/HFS+/NTFS/... 的某些转换起了作用。