Filesystems FAT32:分别设置长文件名和8.3文件名

Filesystems FAT32:分别设置长文件名和8.3文件名,filesystems,filenames,fat32,long-filenames,short-filenames,Filesystems,Filenames,Fat32,Long Filenames,Short Filenames,我需要构造一个SDHC卡(FAT32),其中包含一个目录,在该目录中,我分别选择了短文件名和长文件名。例如,短文件名MYDIR但长名称我是一个很酷的名字。是 啊看看它的惊人之处。基于维基百科,这两个名字之间没有强制性的关联,所以我的目标应该是可能的: 没有从LFN创建8.3名称的强制算法 -- 我可以使用任何必要的系统(windows、mac、linux、hex editor)来实现这一点,但越简单越好。谢谢 我不会依赖维基百科作为技术参考。最好查阅微软的文档。读到这里,我认为这两个文件之间可能

我需要构造一个SDHC卡(FAT32),其中包含一个目录,在该目录中,我分别选择了短文件名和长文件名。例如,短文件名
MYDIR
但长名称
我是一个很酷的名字。是 啊看看它的惊人之处。
基于维基百科,这两个名字之间没有强制性的关联,所以我的目标应该是可能的:

没有从LFN创建8.3名称的强制算法

--


我可以使用任何必要的系统(windows、mac、linux、hex editor)来实现这一点,但越简单越好。谢谢

我不会依赖维基百科作为技术参考。最好查阅微软的文档。读到这里,我认为这两个文件之间可能有关系,所以我不建议修改这些文件。您最好使用短名称。

短文件名是使用您提到的算法从LFN自动强制构造的。(FAT32中也有详细说明)。这是由文件系统驱动程序完成的(至少在Windows和Linux上是这样)。你真的不能改变这一点,除非你修改了不可取的驱动程序。如果您只想对一个目录执行此操作,那么您可以通过在十六进制编辑器中修改磁盘映像来实现这一点,避免创建同名的重复条目

以下是我在Linux上尝试的内容:

#dd if=/dev/zero of=fatImage bs=1048576 count=256
#mkfs.vfat -F 32 fatImage
#mount -o loop fatImage  /mnt
#cd /mnt
#mkdir ThisIsALongDirectoryName
fat驱动程序为目录生成一个短名称:THISIS~1。 您可以使用这两个名称来访问它

#cd /mnt/ThisIsALongDirectoryName
#cd /mnt/THISIS~1
然后在卸载分区后,我在一个十六进制编辑器(KDE上的Okteta)中打开图像,搜索SFN条目THISIS~1, 并将其替换为MYNEWDIR。此外,每个32字节LFN子条目在偏移量13处存储SFN的校验和。 因此,我必须重新计算并替换THISIS~1(即0xA6)的校验和 在所有LFN子条目中使用MYNEWDIR(0x6A)的校验和。保存修改后,我重新安装了映像,并能够使用旧LFN和新SFN访问目录

#cd /mnt/ThisIsALongDirectoryName
#cd /mnt/MYNEWDIR

谢谢你能举出任何你认为很好阅读的文档吗?FAT32的规范是一个很好的标准吗?你使用API来做到这一点吗?如果是,哪一个?如果不是,那么StackOverflow可能不是问这个问题的合适地方。您可以使用fsutil setshortname在NTFS上执行此操作:不幸的是,它说文件必须位于NTFS文件系统卷上,因此您无法在FAT32上自动执行此操作。这里有一个重复:你说你试过这个。你用了什么工具?你有说明书吗?即使最终失败了,我也要自己尝试。谢谢!:)@JonRodriguez事实上,我所描述的一切都是可能的。请看更新后的答案。