В моем домашнем каталоге на Windows у меня есть множество dotfiles и dotfolders которые создаются программным обеспечением, и которые я создаю для непротиворечивости. Я никогда особо не задумывался об этом, кроме случаев, когда я пытался создать их в интерфейсе проводника, и мне напоминали, что я не могу этого сделать, что раздражает, но что угодно.

Я посмотрел на переменную среды PATH и понял, что одна из этих папок была странно переименована при преобразовании в короткое имя Windows. Большинство dotfiles и dotfolders выглядят примерно так (длинное имя справа, короткое слева):

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

и т.п.

Тем не менее, одна папка (папка my go path) была переименована следующим образом:

GO288D~1   .go

Единственное, что я могу понять, - это то, что это связано с тем, что это двузначное имя dotfolder ; это почему? Что на самом деле происходит? Что означает 288D , и почему Windows помещает его туда?

1 ответ1

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 символа расширения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .