Что это за преобразования имен файлов в Windows?

Что это за преобразования имен файлов в Windows?

я использую Windows 7 x64.
Если я нажму правой кнопкой мыши на папку с именем C:\Longer than (3)и нажму «Отправить» и отправлю ее в файл .ahk, который просто показывает полученные аргументы, он покажет C:\LONGER~3. То же самое происходит почти со всеми файлами, например, C:\Новый текстовый документ.txtстановится → C:\700C~1.TXT.

Как преобразовать эти пути в обычные?И что это за преобразования пути?

решение1

Это называется 8.3 имя файла:

Имя файла 8.3 (также называемое коротким именем файла или SFN) — это соглашение об именах файлов, используемое старыми версиями DOS и версиями Microsoft Windows до Windows 95 и Windows NT 3.5. Оно также используется в современных операционных системах Microsoft в качестве альтернативного имени файла длинному имени файла для совместимости с устаревшими программами.
...
Затем сокращенное имя усекается до первых 6 букв его базового имени, за которыми следует тильда, затем одна цифра, затем точка ., а затем первые 3 символа расширения.

Цифра — это просто счетчик. Для C:\LONGER~3, у вас может быть или было 3 файла, которые начинаются с C:\LONGER.

Этот формат позволяет преобразовывать имена файлов в формат, не содержащий специальных символов, особенно пробелов. Это очень полезно для удаления файлов, в имени которых есть невидимые специальные символы, или для передачи их в качестве параметров, не содержащих пробелов (которые в противном случае могли бы быть усечены до первого пробела).

Нет никакой функциональной необходимости преобразовывать эти имена в длинный формат, поскольку они работают так же хорошо, как и длинные.

О нескольких способах преобразования имен 8.3 в длинный формат читайте в посте
Как преобразовать короткий путь имени Windows в длинные имена в пакетном скрипте.

решение2

AFAIK вы не можете получить оригинальное имя файла. Но вы можете отключить эту опцию с помощью команды:

fsutil.exe 8dot3name set D: 1

это отключит его для диска D. Чтобы отключить его на уровне всей системы, используйте команду типа:

fsutil.exe behavior set disable8dot3 1

P.S. Не уверен, доступна ли эта команда в Windows 7.

Связанный контент