8.3 имя файла - 8.3 filename

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

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

Содержание
  • 1 Обзор
    • 1.1 VFAT и компьютерные имена файлов 8.3
  • 2 Совместимость
  • 3 Таблица каталогов
  • 4 Работа с короткими именами файлов в командной строке
  • 5 См. Также
  • 6 Ссылки
Обзор

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

VFAT и компьютерных имен файлов 8.3

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

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

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

  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уже существует). версия + 1.2. Текстстановится VER_12 ~ 1.TEX. .bashrc.swpстановится BASHRC ~ 1.SWP
  4. Во всех версиях NT, включая Windows 2000 и более поздних версий, если уже существует по крайней мере 4 файла или папки с одинаковыми расширения и первых 6 символов в их коротких именах, вырезанный LFN вместо этого усекается до первых 2 букв базового имени (или 1, если базовое имя состоит только из 1 буквы), за которыми следуют 4 шестнадцатеричные цифры, полученные из недокументированный хэш имени файла, за которым следует тильда, за которой следует одна цифра, за которой следует точка ., за которой следуют первые 3 символа расширения.
    • Пример: 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все уже существуют.

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

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

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

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

Эта устаревшая технология используется в широком спектре продуктов и устройств в качестве стандарта для обмена информацией, например, компактные флэш-карты, используемые в камерах. 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), которые видят имена файлов с заглавными буквами, если это расширение использовалось, и, следовательно, могут изменять регистр символов в файле, когда он переносится, например, на флешку. Это может вызвать проблемы для операционных систем, которые не проявляют нечувствительность к регистру имен файлов, как это делают DOS и Windows. Текущие (>2.6) версии Linux распознают это расширение при чтении; короткое имя параметра монтирования определяет, используется ли эта функция при записи.

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

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

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

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

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

  • ", *, +, ,, /, :, ;, <, =, >, ?, \, [, ], |. Windows / MS-DOS не имеет оболочки escape-символ
  • .(U + 002E. FULL STOP) в полях имени и расширения, за исключением записей .и ..(см. Ниже)
  • Строчные буквы az, сохраненные как AZв FAT12 / FAT16
  • Управляющие символы 0–31
  • Значение 127 (DEL )

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

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

Смещение байтаДлинаОписание
0x008Имя файла DOS (с пробелами)

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

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

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

БитМаскаОписание
00x01Только чтение
10x02Скрытый
20x04Система
30x08Метка тома
40x10Подкаталог
50x20Архив
60x40Устройство (только для внутреннего использования, никогда не обнаруживается на диске)
70x80Не используется

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

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

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

0x102Дата создания. Год, месяц и день кодируются в соответствии со следующим растровым изображением:
БитыОписание
15–9Год (0 = 1980, 127 = 2107)
8–5Месяц (1 = январь, 12 = декабрь)
4–0День (1–31)
0x122Дата последнего доступа; см. описание смещения 0x10.
0x142EA-Index (используется OS / 2 и NT) в FAT12 и FAT16, старшие 2 байта номера первого кластера в FAT32
0x162Время последнего изменения; см. описание смещения 0x0e.
0x182Дата последнего изменения; см. описание смещения 0x10.
0x1a2Первый кластер в FAT12 и FAT16. Младшие 2 байта первого кластера в FAT32.
0x1c4Размер файла
Работа с короткими именами файлов в командной строке

Иногда может быть желательно преобразовать длинное имя файла в короткое, например, при работе с командной строкой. Чтобы получить правильное имя файла формата 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 ) принимают длинные имена файлов с символами подстановки (знак вопроса ?и звездочка *); длинные имена файлов с пробелами должны быть экранированы (т. е. заключены в одинарные или двойные кавычки).

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

См. Также
Ссылки
Последняя правка сделана 2021-07-19 05:38:06
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте