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ę:
- Jeśli LFN jest pisany wielką literą 8,3, żaden LFN nie zostanie w ogóle zapisany na dysku.
- Przykład:
TEXTFILE.TXT
- Przykład:
- 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
.
- Przykład:
- 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
(lubTEXTFI~2.TXT
powinienTEXTFI~1.TXT
już istnieć).ver +1.2.text
staje sięVER_12~1.TEX
..bashrc.swp
staje sięBASHRC~1.SWP
- Przykład:
- 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
.
- Przykład:
- 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śliTEXTFI~1.TXT
przezTEXTFI~9.TXT
wszystkie już istnieją.
- Przykład:
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 jakoA
-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:
|
|||||||||||||||||||||||||||
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:
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ą:
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ą:
|
|||||||||||||||||||||||||||
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.
- 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. - 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.
- 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\