同步到 FAT32 驱动器时文件夹名称会变成大写吗?

同步到 FAT32 驱动器时文件夹名称会变成大写吗?

在过去的几个月里,我开始遇到这个非常奇怪的问题。我以前没有遇到过这个问题,现在我不知道是什么原因造成的。

我在 Windows 10 上使用 SyncToy 2.1。我正在将文件同步到 FAT32 格式的 USB 驱动器。

如果文件夹名称包含混合大小写字符,则文件夹名称少于 9 个字符且不包含空格的文件夹将以大写形式复制到 USB。如果文件夹名称少于 9 个字符但包含空格,则复制正确。如果文件夹名称多于 8 个字符,则复制正确。小写文件夹名称(<9 个字符且没有空格)保持小写,大写文件夹名称(<9 个字符且没有空格)保持大写。只有混合大小写才是问题所在。

该问题仅影响文件夹名称,所有文件的文件名无论长度如何都能正确复制。我在多台 Windows 10 PC 上进行了测试,它们都存在同样的问题。我测试了多个 FAT32 USB,它们都存在同样的问题。使用 NTFS 文件系统时不存在此问题,但是我需要使用 FAT32。

示例(PC 文件夹名称 -> USB 文件夹名称):

错误:

  • 测试 -> 测试
  • Abcdefgh -> ABCDEFGH

正确的:

  • 测试 -> 测试
  • Abcdefghi -> Abcdefghi

在此处输入图片描述

我以前从未遇到过这个问题。为什么它突然出现这种奇怪的行为?

答案1

问题在于文件/目录的名称实际上由两个名称组成:旧的(短)8.3 约定和新的(长)255 个字符的名称。
具体来说,对于 FAT 文件系统,每当您为文件命名时,系统都会更新这两个名称。短名称是根据长名称的前几个字符自动创建的(例如SyncToy_4264be.dat变成同步玩具~1.DAT)。如果名称符合旧的命名约定,则长名称将被丢弃。
在旧 DOS 时代,文件名不区分大小写,程序可以随意显示它们(全部大写或全部小写)。然而,在内部,它们全部以大写形式存储。
基于此,似乎 Windows 10 在 8.3 命名大小写方面,在写入 FAT 卷时不会保留字符大小写信息,并将所有字符转换为大写。

您可以在此处阅读有关文件命名约定的一些详细信息:长文件名

相关内容