
я использую 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.