Windows 上奇怪的短路径名

Windows 上奇怪的短路径名

在 Windows 上的主目录中,我有很多由软件创建的文件dotfilesdotfolders,以及我自己为了保持一致性而创建的文件夹。我从来没有真正考虑过这个问题,除非我尝试在资源管理器界面中创建它们,并被提醒我不能这样做,这很烦人,但无论如何。

我查看了我的PATH环境变量,发现其中一个文件夹在转换为 Windows 短名称时被重命名得很奇怪。大多数文件夹dotfilesdotfolders名称看起来都像这样(右边是长名称,左边是短名称):

CACHE~1    .cache
CPAN~1     .cpan
GOOGLE~1   .googlecl

ETC。

但是,一个文件夹(我的go路径文件夹)被重命名如下:

GO288D~1   .go

我唯一能想到的是,它与它是一个两位数的名称有关dotfolder;这是为什么?到底发生了什么?这是什么288D意思,为什么 Windows 将它放在那里?

答案1

启用 8:3 文件名创建功能(可以禁用,但并非没有风险),例如,如果你创建一个长度小于 8:3 的目录,例如

mkdir .go

...然后你最终会得到一个 8:3 的文件名:GO288D~1:

>dir /X | find ".go"
23/02/2017  16:48    <DIR>          GO288D~1     .go

用于填充名称的附加十六进制字符,即 288D,如下所示:https://en.wikipedia.org/wiki/8.3_filename源自“未记录的文件名哈希值”

从 Windows 2000 开始,如果已经存在至少 4 个文件或文件夹,并且它们的短名称中具有相同的初始 6 个字符,则剥离的 LFN 将被截断为基本名称的前 2 个字母(如果基本名称只有 1 个字母,则为 1 个),后跟从未记录的文件名哈希值中派生出的 4 个十六进制数字,后跟波浪号,后跟单个数字,后跟句点 .,后跟扩展名的前 3 个字符。

相关内容