Jump to content

8.3 имя файла

Имя файла 8.3 (также называемое коротким именем файла или SFN ) соответствует соглашению об именах файлов, используемому в старых версиях DOS и версиях Microsoft Windows до Windows 95 и Windows NT 3.5. Оно также используется в современных операционных системах Microsoft как альтернативное длинному имени файла для обеспечения совместимости с устаревшими программами. Соглашение об именах файлов ограничено файловой системой FAT. Подобные схемы именования файлов 8.3 также существовали в более ранних операционных системах миникомпьютеров CP/M, TRS-80, Atari и некоторых Data General and Digital Equipment Corporation.

Имена файлов 8.3 ограничены максимум восемью символами (после любого указателя каталога), за которыми, при необходимости, следует расширение имени файла , состоящее из точки. . и не более трех дополнительных символов. В системах, поддерживающих только имена файлов 8.3, лишние символы игнорируются. Если имя файла не имеет расширения, в конце . не имеет значения (т. myfile и myfile. эквивалентны). Кроме того, файлов и каталогов имена в этой системе написаны прописными буквами , хотя системы, использующие стандарт 8.3, обычно нечувствительны к регистру (что делает их нечувствительными к регистру). CamelCap.tpu эквивалент имени CAMELCAP.TPU). Однако в операционных системах , отличных от 8.3 (таких как практически любая современная операционная система), имеющих доступ к файловым системам 8.3 (включая дискеты в формате DOS , а также некоторые современные карты памяти и сетевые файловые системы), базовая система может внутренне изменять имена файлов на сохраняйте регистр и избегайте сокращения букв в именах, например, в случае VFAT .

VFAT и имена файлов 8.3, созданные компьютером

[ редактировать ]

VFAT , вариант FAT с расширенным форматом каталогов, был представлен в Windows 95 и Windows NT 3.5. в смешанном регистре (LFN) в Юникоде Он позволял использовать длинные имена файлов в дополнение к классическим именам 8.3, используя несколько 32-байтовых записей записей каталога для длинных имен файлов (таким образом, что старое системное программное обеспечение 8.3 распознавало только одну как действительную запись каталога).

Чтобы поддерживать обратную совместимость с устаревшими приложениями (в DOS и Windows 3.1 ), в файловых системах FAT и VFAT, операционная система автоматически генерирует имя файла 8.3 для каждого LFN, с помощью которого файл можно [также] открыть, переименовать или удалить. хотя сгенерированное имя (например, OVI3KV~N) может иметь небольшое сходство с оригиналом. Генерацию имен файлов 8.3 в файловых системах NTFS можно отключить для всей системы (с риском). [1] Имя файла версии 8.3 можно получить с помощью функции GetShortPathName ядра Kernel32.dll . [2] [3]

Хотя не существует обязательного алгоритма для создания имени 8.3 из LFN, Windows использует следующее соглашение: [4]

  1. Если LFN записан в верхнем регистре 8.3, LFN вообще не будет храниться на диске.
    • Пример: TEXTFILE.TXT
  2. Если LFN имеет смешанный регистр 8.3, LFN будет хранить имя в смешанном регистре, а имя 8.3 будет его версией в верхнем регистре.
    • Пример: TextFile.Txt становится TEXTFILE.TXT.
  3. Если имя файла содержит символы, недопустимые в имени 8.3 (включая пробелы, которые запрещены соглашением, но не API) или какая-либо часть слишком длинная, имя удаляется из недопустимых символов, таких как пробелы и дополнительные точки. Если имя начинается с точки . ведущие периоды удаляются. Другие персонажи, такие как + заменены на подчеркивание _, а буквы пишутся заглавными буквами. Вырезанное имя затем усекается до первых 6 букв его базового имени , за которыми следует тильда , затем одна цифра и точка. ., за которым следуют первые 3 символа расширения.
    • Пример: TextFile.Mine.txt становится TEXTFI~1.TXT (или TEXTFI~2.TXT, должен TEXTFI~1.TXT уже существуют). ver +1.2.text становится VER_12~1.TEX. .bashrc.swp становится BASHRC~1.SWP
  4. Во всех версиях NT, включая Windows 2000 и более поздние версии, если уже существуют как минимум 4 файла или папки с тем же расширением и первыми 6 символами в их коротких именах, очищенный LFN вместо этого усекается до первых двух букв базового имени (или 1, если базовое имя состоит только из 1 буквы), за которыми следуют 4 шестнадцатеричные цифры, полученные из недокументированного хеша имени файла, за которыми следует тильда, за которой следует одна цифра, за которой следует точка ., за которым следуют первые 3 символа расширения. [5]
    • Пример: TextFile.Mine.txt становится TE021F~1.TXT.
  5. В Windows 95, 98 и ME, если более 9 файлов или папок с одинаковым расширением и первыми 6 символами и их короткими именами (чтобы ~1 через ~9 суффиксов недостаточно для разрешения коллизии), имя дополнительно сокращается до 5 букв, за которыми следует тильда, затем две цифры, начиная с 10, а затем точка . и первые 3 символа расширения.
    • Пример: TextFile.Mine.txt становится TEXTF~10.TXT если TEXTFI~1.TXT через TEXTFI~9.TXT все уже есть.

Во время антимонопольного дела Microsoft в 2001 году названия MICROS~1 и MICROS~2 в шутку использовались для обозначения компаний, которые могли бы существовать после предложенного разделения Microsoft. [6]

NTFS , файловая система, используемая семейством Windows NT , изначально поддерживает LFN, но имена 8.3 по-прежнему доступны для устаревших приложений. Известно, что Windows NTVDM использует имена 8.3. При желании это можно отключить в масштабе всей системы, чтобы повысить производительность в ситуациях, когда в одной папке существует большое количество файлов с одинаковыми именами. [1] Создание имен файлов 8.3 можно отключить для всей системы и/или для каждого тома, а существующие имена файлов 8.3 можно удалить с помощью fsutil или ключ реестра. [7]

Файловая система ISO 9660 (в основном используемая на компакт-дисках ) имеет аналогичные ограничения на самом базовом уровне 1, с дополнительным ограничением, согласно которому имена каталогов не могут содержать расширения и что некоторые символы (особенно дефисы ) не допускаются в именах файлов. Уровень 2 допускает имена файлов длиной до 31 символа, что более совместимо с классическими именами файлов AmigaOS и Mac OS .

В файловых системах VFAT и NTFS имена файлов 8.3 сохраняются в кодировке ANSI для обеспечения обратной совместимости.

ReFS больше не поддерживает имена файлов 8.3.

Совместимость

[ редактировать ]

Эта устаревшая технология используется в широком спектре продуктов и устройств в качестве стандарта для обмена информацией, например, в компактных флэш-картах, используемых в камерах. VFAT LFN Длинные имена файлов , представленные в Windows 95/98/ME, сохранили совместимость. Но VFAT LFN, используемый в системах на базе NT (Windows NT/2K/XP), использует модифицированное короткое имя 8.3.

Если имя файла содержит только строчные буквы или представляет собой комбинацию нижнего регистра с расширением в верхнем регистре или наоборот; и не имеет специальных символов и соответствует ограничениям 8.3, запись VFAT не создается в Windows NT и более поздних версиях, таких как XP. Вместо этого два бита в байте 0x0c записи каталога используются для указания того, что имя файла следует рассматривать как полностью или частично в нижнем регистре. В частности, бит 4 означает расширение в нижнем регистре , а бит 3 — базовое имя в нижнем регистре , что позволяет использовать такие комбинации, как example.TXT или HELLO.txt но не Mixed.txt. Некоторые другие операционные системы поддерживают это. с обратной совместимостью Это создает проблему искажения имен файлов со старыми версиями Windows (95, 98, ME), которые видят имена файлов, состоящие только из заглавных букв, если это расширение использовалось, и, следовательно, могут изменить заглавные буквы файла при его транспортировке, например, при USB-накопитель. Это может вызвать проблемы в операционных системах, которые не демонстрируют нечувствительность к регистру имен файлов, как это происходит в DOS и Windows. Linux распознает это расширение при чтении; [8] опции монтирования короткое имя определяет, используется ли эта функция при записи. [9] Для MS-DOS вы можете использовать DOSLFN Хенрика Хафтмана. [10]

Таблица каталогов

[ редактировать ]

Таблица каталогов — это особый тип файла, представляющий каталог. Каждый файл или каталог, хранящийся в нем, представлен в таблице 32-байтовой записью. В каждой записи записываются имя, расширение, атрибуты ( архив , каталог, скрытый, только для чтения, система и том), дата и время создания, адрес первого кластера данных файла/каталога и, наконец, размер файл/каталог.

Допустимые символы для имен файлов DOS включают следующее:

  • Прописные буквы AZ
  • Числа 09
  • Пробел (хотя конечные пробелы в базовом имени или расширении считаются дополнением, а не частью имени файла, также имена файлов с пробелами должны быть заключены в кавычки для использования в командной строке DOS, и если DOS команда создается программно, имя файла должно быть заключено в двойные кавычки ( ""... ""), если рассматривать его как переменную в программе, создающей команду DOS.)
  • !, #, $, %, &, ', (, ), -, @, ^, _, `, {, }, ~
  • Значения 128–255 (хотя, если службы NLS активны в DOS, некоторые символы, интерпретируемые как строчные, недействительны и недоступны)

Это исключает следующие символы ASCII :

  • ", *, +, ,, /, :, ;, <, =, >, ?, \, [, ], |[11]
    В MS-DOS нет escape-символа оболочки.
  • . ( U + 002E . ПОЛНАЯ СТОП ) в полях имени и расширения, за исключением . и .. записи (см. ниже)
  • Строчные буквы az, хранится как AZ на FAT12/FAT16
  • Управляющие символы 0–31
  • Значение 127 ( УДАЛ ) [ сомнительно обсудить ]

Имена файлов DOS имеют набор символов OEM .Код 0xE5 в качестве первого байта (см. ниже) создает проблемы при дополнительных символов ASCII использовании .

Записи каталога как в корневом регионе каталога, так и в подкаталогах имеют следующий формат:

Байтовое смещение Длина Описание
0x00 8 Имя файла DOS (дополненное пробелами)

Первый байт может иметь следующие специальные значения:

0x00 Запись доступна, но последующая запись не используется.
0x05 Начальный символ на самом деле 0xE5.
0x2E Ввод через точку : либо . или ..
0xE5 Запись ранее была удалена. файла Утилиты восстановления должны заменить этот символ обычным символом в рамках процесса восстановления.
0x08 3 Расширение файла DOS (дополнено пробелами, может быть пустым)
0x0b 1 Атрибуты файла

Первый байт может иметь следующие специальные значения:

Кусочек Маска Описание
0 0x01 Только чтение
1 0x02 Скрытый
2 0x04 Система
3 0x08 Метка тома
4 0x10 Подкаталог
5 0x20 Архив
6 0x40 Устройство (только для внутреннего использования, не встречается на диске)
7 0x80 Неиспользованный

Значение атрибута 0x0F используется для обозначения записи с длинным именем файла.

0x0c 1 Сдержанный; два бита используются NT и более поздними версиями для кодирования информации о регистре
0x0d 1 Время создания, точное разрешение: единицы 10 мс , значения от 0 до 199.
0x0e 2 Создайте время. Час, минута и секунда кодируются в соответствии со следующим растровым изображением:
Биты Описание
15–11 Часы (0–23)
10–5 Минуты (0–59)
4–0 Секунды/2 (0–29)

Обратите внимание, что секунды записываются только с разрешением 2 секунды . Более точное разрешение для создания файла находится по смещению 0x0d.

0x10 2 Создать дату. Год, месяц и день кодируются в соответствии со следующим растровым изображением:
Биты Описание
15–9 Год (0 = 1980, 127 = 2107)
8–5 Месяц (1 = январь, 12 = декабрь)
4–0 День (1–31)
0x12 2 Дата последнего доступа; описание см. в смещении 0x10.
0x14 2 Индекс EA (используется OS/2 и NT) в FAT12 и FAT16, старшие 2 байта первого номера кластера в FAT32.
0x16 2 Время последнего изменения; описание см. в смещении 0x0e.
0x18 2 Дата последнего изменения; описание см. в смещении 0x10.
0x1a 2 Первый кластер в FAT12 и FAT16. Младшие 2 байта первого кластера в FAT32.
0x1c 4 Размер файла

Работа с короткими именами файлов в командной строке

[ редактировать ]

Иногда может быть желательно преобразовать длинное имя файла в короткое, например, при работе с командной строкой. Чтобы получить правильное имя файла 8.3, можно следовать нескольким простым правилам.

  1. Имя файла SFN может содержать не более 8 символов перед точкой. Если его больше, необходимо написать первые 6, затем тильду ~ в качестве седьмого символа и число (обычно 1) в качестве восьмого. Номер отличает его от других файлов с такими же первыми шестью буквами и таким же расширением.
  2. Точки важны и должны использоваться даже для названий папок (если в названии папки есть точка). Если в длинном имени файла/каталога имеется несколько точек, используется только последняя. Предыдущие точки следует игнорировать. Если после последней точки больше трех символов, используются только первые три.
  3. В целом:
    • Любые пробелы в именах файлов следует игнорировать при преобразовании в SFN.
    • Игнорировать все периоды, кроме последнего. Не включайте другие точки, как и пробелы. Используйте последнюю точку, если она есть, и последующие символы (до 3). Например, для .manifest будет использоваться только .man.
    • Запятые, квадратные скобки, точки с запятой, знаки = и + заменяются символами подчеркивания.
    • Случай не важен; Символы верхнего и нижнего регистра обрабатываются одинаково.

Чтобы точно узнать имена SFN или 8.3 файлов в каталоге

использовать: dir /x показывает короткие имена, если они есть, и длинные имена.

или: dir /-n показывает только короткие имена в исходном формате списка DIR.

В операционных системах Windows NT апплет командной строки ( cmd.exe ) принимает длинные имена файлов с подстановочными знаками (знак вопроса ? и звездочка *); длинные имена файлов с пробелами необходимо экранировать (т.е. заключать в одинарные или двойные кавычки). [12]

Начиная с Windows Vista , консольные команды и апплеты PowerShell выполняют ограниченное сопоставление шаблонов , допуская подстановочные знаки в имени файла и каждом подкаталоге в пути к файлу и автоматически заменяя первую соответствующую запись каталога (например, C:\>CD \prog*\inter* изменит текущий каталог на C:\Program Files\Internet Explorer\).

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б «Как отключить создание имени 8.3 на разделах NTFS» . Майкрософт . Проверено 26 февраля 2021 г.
  2. ^ «Функция GetShortPathName» . MSDN . Архивировано из оригинала 1 октября 2015 г. Проверено 15 сентября 2014 г.
  3. ^ «Как получить короткое имя файла из длинного имени файла» . Майкрософт . Проверено 26 февраля 2021 г.
  4. ^ «Как Windows генерирует имена файлов 8.3 из длинных имен файлов» . Майкрософт.
  5. ^ Гэлвин, Томас (9 июня 2015 г.). «Повесть о двух именах файлов» . Tomgalvin.uk . Архивировано из оригинала 25 августа 2023 г. Проверено 17 октября 2022 г.
  6. ^ «Однострочный дайджест Microsoft» .
  7. ^ «Как можно запретить «del *.tmp» удалять файлы *.tmpl в cmd.exe?» . суперпользователь .
  8. ^ «dir.c\fat\fs — kernel/git/torvalds/linux.git — дерево исходного кода ядра Linux» . git.kernel.org . Проверено 25 июня 2018 г.
  9. ^ «mount(8): монтировать файловую систему – справочная страница Linux» .
  10. ^ «ДОСЛФН» .
  11. ^ Андрис Брауэр (26 декабря 2007 г.). «Вход в каталог» . Файловая система FAT . Проверено 30 июля 2013 г.
  12. ^ «Использование длинных имен файлов» . 11 сентября 2008 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 7ee2df551c120d861bd3935d031fedfe__1721771880
URL1:https://arc.ask3.ru/arc/aa/7e/fe/7ee2df551c120d861bd3935d031fedfe.html
Заголовок, (Title) документа по адресу, URL1:
8.3 filename - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)