8.3 nazwa pliku - 8.3 filename

8,3 filename (zwany również krótki nazwa pliku lub SFN ) to nazwa pliku konwencja wykorzystywane przez starych wersjach DOS i wersjami Microsoft Windows przed Windows 95 i Windows NT 3.5 . Jest również używany w nowoczesnych systemach operacyjnych firmy Microsoft jako alternatywna nazwa pliku do długiej nazwy pliku w celu zapewnienia zgodności ze starszymi programami. Konwencja nazw plików jest ograniczona przez system plików FAT . Podobne schematy nazewnictwa plików 8.3 istniały również we wcześniejszych systemach operacyjnych CP / M , TRS-80 , Atari i niektórych minikomputerowych systemach operacyjnych Data General and Digital Equipment Corporation .

Przegląd

8.3 Nazwy plików są ograniczone do maksymalnie ośmiu znaków (po dowolnym specyfikatorze katalogu), po których opcjonalnie następuje rozszerzenie nazwy pliku składające się z kropki . i maksymalnie trzech dalszych znaków. W systemach, które obsługują tylko nazwy plików 8.3, nadmiarowe znaki są ignorowane. Jeśli nazwa pliku nie ma rozszerzenia, zakończenie . nie ma znaczenia (to znaczy myfile i myfile. jest równoważne). Ponadto nazwy plików i katalogów w tym systemie są pisane wielkimi literami , mimo że w systemach używających standardu 8.3 zwykle nie jest rozróżniana CamelCap.tpu wielkość liter (co jest odpowiednikiem nazwy CAMELCAP.TPU ). Jednak w systemach operacyjnych innych niż 8.3 (takich jak prawie każdy nowoczesny system operacyjny) z dostępem do systemów plików 8.3 (w tym dyskietek w formacie DOS , ale także z niektórymi nowoczesnymi kartami pamięci i sieciowymi systemami plików), system bazowy może wewnętrznie zmieniać nazwy plików, aby zachować przypadek i uniknąć obcinania liter w nazwach, na przykład w przypadku VFAT .

VFAT i generowane komputerowo nazwy plików 8.3

VFAT , wariant FAT z rozszerzonym formatem katalogów, został wprowadzony w Windows 95 i Windows NT 3.5. Pozwoliło to na długie nazwy plików w formacie Unicode (LFN) z różnymi wielkościami liter, oprócz klasycznych nazw 8.3, dzięki zastosowaniu wielu 32-bajtowych rekordów wpisów katalogu dla długich nazw plików (w taki sposób, że tylko jeden zostanie rozpoznany przez stare oprogramowanie systemowe 8.3 jako prawidłowy wpis w katalogu ).

Aby zachować kompatybilność wsteczną ze starszymi aplikacjami (w DOS i Windows 3.1 ), w systemach plików FAT i VFAT nazwa pliku 8.3 jest generowana automatycznie dla każdego LFN, dzięki czemu nadal można zmienić nazwę, usunąć lub otworzyć plik, chociaż wygenerowana nazwa (np. OVI3KV~N ) może wykazywać niewielkie podobieństwo do oryginału. W systemach plików NTFS można wyłączyć generowanie nazw plików 8.3. Nazwę pliku 8.3 można uzyskać za pomocą funkcji Kernel32.dll GetShortPathName.

Chociaż nie ma obowiązkowego algorytmu tworzenia nazwy 8.3 z LFN, system Windows stosuje następującą konwencję:

  1. Jeśli LFN jest pisany wielką literą 8,3, żaden LFN nie zostanie w ogóle zapisany na dysku.
    • Przykład: TEXTFILE.TXT
  2. Jeśli LFN to 8.3, to LFN będzie przechowywać nazwę z mieszanymi literami, podczas gdy nazwa 8.3 będzie wersją pisaną wielkimi literami.
    • Przykład: TextFile.Txt staje się TEXTFILE.TXT .
  3. Jeśli nazwa pliku zawiera znaki niedozwolone w nazwie 8.3 (w tym spacje, które zostały zabronione przez konwencję, ale nie przez interfejsy API) lub którakolwiek część jest zbyt długa, nazwa jest pozbawiona nieprawidłowych znaków, takich jak spacje i dodatkowe kropki. Jeśli nazwa zaczyna się kropkami, . początkowe kropki są usuwane. Inne znaki, takie jak, + są zamieniane na podkreślenie _ , a litery są umieszczane wielkimi literami. Usunięta nazwa jest następnie obcinana do pierwszych 6 liter nazwy bazowej , po której następuje tylda , po której następuje pojedyncza cyfra , po której następuje kropka . , po których następują pierwsze 3 znaki rozszerzenia.
    • Przykład: TextFile.Mine.txt staje się TEXTFI~1.TXT (lub TEXTFI~2.TXT powinien TEXTFI~1.TXT już istnieć). ver +1.2.text staje się VER_12~1.TEX . .bashrc.swp staje się BASHRC~1.SWP
  4. We wszystkich wersjach NT, w tym Windows 2000 i nowszych, jeśli istnieją już co najmniej 4 pliki lub foldery z tym samym rozszerzeniem i pierwszymi 6 znakami w ich krótkich nazwach, pozbawiony LFN jest zamiast tego obcinany do pierwszych 2 liter nazwy bazowej (lub 1, jeśli basename ma tylko 1 literę), po których następują 4 cyfry szesnastkowe pochodzące z nieudokumentowanego skrótu nazwy pliku, po którym następuje tylda, po której następuje pojedyncza cyfra, po której następuje kropka . , po których następują 3 pierwsze znaki rozszerzenia.
    • Przykład: TextFile.Mine.txt staje się TE021F~1.TXT .
  5. W systemie Windows 95, 98 i ME, jeśli więcej niż 9 pliki lub foldery o tej samej rozbudowy i pierwsze 6 znaków i w swoich krótkich nazw (tak, że ~1 przez ~9 przyrostków nie są wystarczające, aby rozwiązać kolizji), nazwa jest dodatkowo obcięty do 5 litery, po których następuje tylda, po których następują dwie cyfry zaczynające się od 10, po których następuje kropka . i pierwsze 3 znaki rozszerzenia.
    • Przykład: TextFile.Mine.txt staje się, TEXTF~10.TXT jeśli TEXTFI~1.TXT przez TEXTFI~9.TXT wszystkie już istnieją.

NTFS , system plików używany przez rodzinę Windows NT , natywnie obsługuje LFN, ale nazwy 8.3 są nadal dostępne dla starszych aplikacji. Można to opcjonalnie wyłączyć, aby poprawić wydajność w sytuacjach, gdy w tym samym folderze znajduje się duża liczba plików o podobnych nazwach.

System plików ISO 9660 (używany głównie na dyskach kompaktowych ) ma podobne ograniczenia na najbardziej podstawowym poziomie 1, z dodatkowym ograniczeniem, że nazwy katalogów nie mogą zawierać rozszerzeń, a niektóre znaki (zwłaszcza łączniki ) nie są dozwolone w nazwach plików. Poziom 2 dopuszcza nazwy plików do 31 znaków, bardziej kompatybilne z klasycznymi nazwami plików AmigaOS i klasycznymi Mac OS .

W 2001 r. W sprawie antymonopolowej firmy Microsoft nazwy MICROS ~ 1 i MICROS ~ 2 były żartobliwie używane w odniesieniu do firm, które mogą istnieć po proponowanym podziale firmy Microsoft.

Zgodność

Ta starsza technologia jest stosowana w wielu produktach i urządzeniach jako standard wymiany informacji, takich jak karty Compact Flash używane w aparatach. Długie nazwy plików VFAT LFN wprowadzone przez Windows 95/98 / ME zachowały kompatybilność. Ale VFAT LFN używany w systemach opartych na NT (Windows NT / 2K / XP) używa zmodyfikowanej nazwy skróconej 8.3.

Jeśli nazwa pliku zawiera tylko małe litery lub jest połączeniem małej litery nazwa-podstawowa z rozszerzeniem wielkich liter , lub odwrotnie; i nie ma znaków specjalnych i mieści się w granicach 8.3, pozycja VFAT nie jest tworzona w systemie Windows NT i nowszych wersjach, takich jak XP. Zamiast tego dwa bity w bajcie 0x0c wpisu katalogu są używane do wskazania, że ​​nazwa pliku powinna być traktowana jako całkowicie lub częściowo mała. W szczególności bit 4 oznacza rozszerzenie małymi literami, a bit 3 nazwa podstawowa małymi literami , co pozwala na takie kombinacje, jak example.TXT lub, HELLO.txt ale nie Mixed.txt . Niewiele innych systemów operacyjnych obsługuje to. Stwarza to problem z odwzorowaniem nazw plików w starszych wersjach systemu Windows (95, 98, ME), które widzą nazwy plików składające się wyłącznie z wielkich liter, jeśli to rozszerzenie zostało użyte, a zatem mogą zmienić wielkość liter pliku podczas transportu, na przykład on pamięć flash USB. Może to powodować problemy w systemach operacyjnych, które nie mają takiego zachowania w nazwach plików bez rozróżniania wielkości liter, jak to ma miejsce w przypadku systemów DOS i Windows. Obecne (> 2.6) wersje Linuksa rozpoznają to rozszerzenie podczas czytania; krótka nazwa opcji montowania określa, czy ta funkcja jest używana podczas pisania. W przypadku MS-DOS możesz użyć DOSLFN Henrika Haftmanna.

Tabela katalogów

Tabela katalogów to specjalny typ pliku, który reprezentuje katalog. Każdy zapisany w nim plik lub katalog jest reprezentowany przez 32-bajtowy wpis w tabeli. Każdy wpis rejestruje nazwę, rozszerzenie, atrybuty ( archiwum , katalog, ukryty, tylko do odczytu, system i wolumin), datę i godzinę utworzenia, adres pierwszego klastra danych pliku / katalogu i wreszcie rozmiar plik / katalog.

Znaki prawne w nazwach plików DOS obejmują:

  • Wielkie litery A - Z
  • Liczby 0 - 9
  • Spacja (chociaż końcowe spacje w nazwie podstawowej lub rozszerzeniu są uważane za dopełnienie, a nie za część nazwy pliku, również nazwy plików ze spacjami muszą być ujęte w cudzysłowy, aby mogły być użyte w wierszu poleceń DOS, a jeśli DOS polecenie jest budowane programowo, nazwa pliku musi być ujęta w podwójne cudzysłowy ( "" ... "" ), gdy jest wyświetlana jako zmienna w programie budującym polecenie DOS.)
  • ! , # , $ , % , & , ' , ( , ) , - , @ , ^ , _ , ` , { , } , ~
  • Wartości 128–255 (chociaż jeśli usługi NLS są aktywne w DOS, niektóre znaki interpretowane jako małe litery są nieprawidłowe i niedostępne)

Wyklucza to następujące znaki ASCII :

  • " , * , + , , , / , : , ; , < , = , > , ? , \ , [ , ] , |
    Windows / MS-DOS nie ma powłoki znak escape
  • . ( U + 002E . FULL STOP ) w polach nazw i rozszerzeń, z wyjątkiem wpisów . i .. (patrz poniżej)
  • Małe litery a - z , przechowywane jako A - Z w FAT12 / FAT16
  • Znaki sterujące 0–31
  • Wartość 127 ( DEL )

Nazwy plików DOS znajdują się w zestawie znaków OEM . Kod 0xE5 jako pierwszy bajt (patrz poniżej) sprawia problemy, gdy używane są dodatkowe znaki ASCII .

Wpisy katalogu, zarówno w regionie katalogu głównego, jak iw podkatalogach, mają następujący format:

Przesunięcie bajtów Długość Opis
0x00 8 Nazwa pliku DOS (dopełniona spacjami)

Pierwszy bajt może mieć następujące wartości specjalne:

0x00 Wpis jest dostępny i żaden kolejny wpis nie jest używany
0x05 Początkowy znak to w rzeczywistości 0xE5
0x2E Wpis kropki : albo . lub ..
0xE5 Wpis został wcześniej usunięty. Narzędzia przywracania plików muszą zastąpić ten znak zwykłym znakiem w ramach procesu przywracania.
0x08 3 Rozszerzenie pliku DOS (wypełnione spacjami, może być puste)
0x0b 1 Atrybuty plików

Pierwszy bajt może mieć następujące wartości specjalne:

Kawałek Maska Opis
0 0x01 Tylko czytać
1 0x02 Ukryty
2 0x04 System
3 0x08 Etykieta woluminu
4 0x10 Podkatalog
5 0x20 Archiwum
6 0x40 Urządzenie (tylko do użytku wewnętrznego, nigdy nie znaleziono na dysku)
7 0x80 Nie używany

Wartość atrybutu 0x0F jest używana do oznaczenia długiego wpisu w nazwie pliku.

0x0c 1 Zarezerwowany; dwa bity są używane przez NT i nowsze wersje do kodowania informacji o przypadku
0x0d 1 Czas tworzenia, dokładna rozdzielczość: jednostki 10  ms , wartości od 0 do 199.
0x0e 2 Stwórz czas. Godzina, minuta i sekunda są kodowane zgodnie z następującą mapą bitową:
Bity Opis
15–11 Godziny (0–23)
10–5 Minuty (0–59)
4–0 Sekundy / 2 (0–29)

Zwróć uwagę, że sekundy są rejestrowane tylko z rozdzielczością 2  sekund . Lepszą rozdzielczość do tworzenia plików można znaleźć przy przesunięciu 0x0d.

0x10 2 Data Utworzenia. Rok, miesiąc i dzień są kodowane zgodnie z następującą mapą bitową:
Bity Opis
15–9 Rok (0 = 1980, 127 = 2107)
8–5 Miesiąc (1 = styczeń, 12 = grudzień)
4–0 Dzień (1–31)
0x12 2 Data ostatniego dostępu; opis patrz odsunięcie 0x10.
0x14 2 EA-Index (używany przez OS / 2 i NT) w FAT12 i FAT16, wysokie 2 bajty pierwszego numeru klastra w FAT32
0x16 2 Czas ostatniej modyfikacji; opis patrz offset 0x0e.
0x18 2 Data ostatniej modyfikacji; opis patrz odsunięcie 0x10.
0x1a 2 Pierwszy klaster w FAT12 i FAT16. Małe 2 bajty pierwszego klastra w FAT32.
0x1c 4 Rozmiar pliku

Praca z krótkimi nazwami plików w wierszu polecenia

Czasami może być pożądane przekonwertowanie długiej nazwy pliku na krótką, na przykład podczas pracy z wierszem poleceń. Aby uzyskać poprawną nazwę pliku 8.3, można postępować zgodnie z kilkoma prostymi regułami.

  1. Nazwa pliku SFN może mieć co najwyżej 8 znaków przed kropką. Jeśli ma więcej niż to, pierwsze 6 musi zostać zapisane, następnie tylda ~ jako siódmy znak i liczba (zwykle 1) jako ósma. Numer odróżnia go od innych plików z tymi samymi pierwszymi sześcioma literami i tym samym rozszerzeniem.
  2. Kropki są ważne i należy ich używać nawet w nazwach folderów (jeśli w nazwie folderu znajduje się kropka). Jeśli w długiej nazwie pliku / katalogu znajduje się wiele kropek, używana jest tylko ostatnia. Poprzednie kropki należy zignorować. Jeśli po ostatniej kropce jest więcej niż trzy znaki, używane są tylko pierwsze trzy.
  3. Ogólnie:
    • Wszelkie spacje w nazwach plików powinny być ignorowane podczas konwersji do SFN.
    • Zignoruj ​​wszystkie okresy z wyjątkiem ostatniego. Nie dodawaj żadnych innych kropek, tak jak spacje. Użyj ostatniej kropki, jeśli występuje, i następnych znaków (maksymalnie 3). Na przykład dla .manifest zostanie użyty tylko .man.
    • Przecinki, nawiasy kwadratowe, średniki, znaki = i + są zamieniane na podkreślenia.
    • Wielkość liter nie jest ważna, wielkie i małe litery są traktowane jednakowo.

Aby dowiedzieć się na pewno nazwy SFN lub 8.3 plików w katalogu

use: dir /x pokazuje krótkie nazwy, jeśli istnieją, i długie nazwy.

lub: dir /-n pokazuje tylko krótkie nazwy w oryginalnym formacie listy DIR.

W systemach operacyjnych Windows NT aplety wiersza polecenia ( cmd.exe ) akceptują długie nazwy plików ze znakami wieloznacznymi (znak zapytania ? i gwiazdka * ); długie nazwy plików ze spacjami muszą być poprzedzone znakiem zmiany znaczenia (tj. ujęte w pojedyncze lub podwójne cudzysłowy).

Począwszy od systemu Windows Vista , polecenia konsoli i aplety programu PowerShell wykonują ograniczone dopasowywanie wzorców , zezwalając na używanie symboli wieloznacznych w nazwie pliku i każdym podkatalogu w ścieżce pliku i po cichu zastępując pierwszy pasujący wpis katalogu (na przykład zmieni bieżący katalog na ). C:\>CD \prog*\inter*C:\Program Files\Internet Explorer\

Zobacz też

Bibliografia