DOS短文件名规则

当创建一个长文件名文件时,系统会自动加上对应的短文件名,其一般有的原则:
(1)、取长文件名的前 6 个字符加上”~1”形成短文件名,扩展名不变。
(2)、如果已存在这个文件名,则符号”~”后的数字递增,直到 5。
(3)、如果文件名中”~”后面的数字达到 5,则短文件名只使用长文件名的前两个字母。通过数学操纵长文件名的剩余字母生成短文件名的后四个字母,然后加后缀”~1”直到最后(如果有必要,或是其他数字以避免重复的文件名)。
(4)、如果存在老 OS 或程序无法读取的字符,换以”_”

长文件名如何转换为短文件名

长短文件名如何配对与文件系统目录结构有关,以FAT32为例,长文件名的0xD字节的校验和起很重要的作用。校验和是用短文件名的11 个字符通过一种运算方式来得到的,系统根据相应的算法来确定相应的长文件名和短文件名是否匹配。这个算法不太容易用公式说明,我们用一段c程序来加以说明。假设文件名11个字符组成字符串shortname[],校验和用chknum表示。得到过程如下:

int ij,chknum=0;
for (i=11; i>0; i--)
chksum = ((chksum & 1) ? 0x80 : 0) + (chksum >> 1) + shortname[j++];

如果通过短文件名计算出来的校验和与长文件名中的0xD偏移处数据不相等。系统无论如何都不会将它们配对的。

长短文件名配对详细解释点我



如何查看磁盘文件短文件名

以C盘为例,DOS命令行输入”dir/x”,结果如下图(最右列是长文件名,左侧是对应的短文件名):
这里写图片描述


但是我在DOS内查看我的D盘时发现无法显示对应的短文件名,如下图:
这里写图片描述

后来发现是因为我的D盘关闭了8.3兼容特性,也就是新建一个长文件名文件,并不会自动创建对应的短文件名,所以”dir/x”命令无法显示出短文件名。

Tips: DOS窗口下输入如下命令行可以查看修改8.3兼容特性:
fsutil behavior query disable8dot3 检查NTFS驱动是否开启8.3兼容特性
fsutil behavior set disable8dot3 1 关闭8.3兼容特性
fsutil behavior set disable8dot3 0 开启8.3兼容特性
fsutil file setshortname <长文件名> <8.3短文件名> 手工指定一个8.3短名称

开启8.3兼容特性后(新建了一个名为”asdadawdasadasdad”的文件夹)
发现新建的文件夹存在短文件名,之前的文件仍没有短文件名。

这里写图片描述


参考文献:

Windows系统下的文件长名和文件短名

关于CMD/DOS中的短文件名规则

FAT32系统中长文件名的存储

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值