8.3 název souboru - 8.3 filename

Název souboru 8.3 (nazývaný také krátký název souboru nebo SFN ) je konvence názvu souboru používaná starými verzemi systému DOS a verzemi systému Microsoft Windows před Windows 95 a Windows NT 3.5 . Používá se také v moderních operačních systémech Microsoft jako alternativní název souboru k dlouhému názvu souboru kvůli kompatibilitě se staršími programy. Konvence názvů souborů je omezena souborovým systémem FAT . Podobná schémata pojmenování souborů 8.3 existovala také na dřívějších minipočítačových operačních systémech CP / M , TRS-80 , Atari a některých operačních systémech Data General a Digital Equipment Corporation .

Přehled

8.3 Názvy souborů jsou omezeny na maximálně osm znaků (za jakýmkoli specifikátorem adresáře), následované volitelně příponou souboru, která se skládá z tečky . a nejvýše tří dalších znaků. U systémů, které podporují pouze názvy souborů 8.3, jsou přebytečné znaky ignorovány. Pokud název souboru neobsahuje žádná rozšíření, vlečený . nemá žádný význam (to znamená, myfile a myfile. jsou rovnocenné). Kromě toho jsou názvy souborů a adresářů v tomto systému velkými písmeny , přestože systémy, které používají standard 8.3, obvykle nerozlišují velká a malá písmena (což CamelCap.tpu odpovídá jménu CAMELCAP.TPU ). Nicméně, na non-8.3 operačních systémech (jako téměř každého moderního operačního systému) přístup 8.3 souborových systémů (včetně systému DOS formátované diskety , ale také včetně některé moderní paměťové karty a síťové souborové systémy), podkladové systém může změnit názvy souborů interně zachovat velká písmena a vyhněte se zkrácení písmen ve jménech, například v případě VFAT .

VFAT a počítačem generované názvy souborů 8.3

VFAT , varianta FAT s rozšířeným formátem adresáře, byla představena ve Windows 95 a Windows NT 3.5. Umožnilo smíšené případy dlouhých názvů souborů Unicode (LFN) kromě klasických názvů 8,3 pomocí více 32bajtových záznamů záznamu adresáře pro dlouhé názvy souborů (takovým způsobem, že starý systémový software 8.3 rozpozná pouze jeden jako platný záznam adresáře ).

Pro zachování zpětné kompatibility se staršími aplikacemi (v systému DOS a Windows 3.1 ) se na souborových systémech FAT a VFAT automaticky vygeneruje název souboru 8.3 pro každý LFN, jehož prostřednictvím lze soubor přesto přejmenovat, odstranit nebo otevřít, i když vygenerovaný název (např. OVI3KV~N ) může vykazovat malou podobnost s originálem. V souborových systémech NTFS lze generování názvů souborů 8.3 vypnout. Název souboru 8.3 lze získat pomocí funkce GetShortPathName aplikace Kernel32.dll .

Ačkoli neexistuje žádný povinný algoritmus pro vytvoření názvu 8.3 z LFN, Windows používá následující konvenci:

  1. Pokud je LFN 8,3 velká, nebude na disk vůbec uložena LFN.
    • Příklad: TEXTFILE.TXT
  2. Pokud je LFN 8.3 smíšený případ, LFN uloží název smíšeného případu, zatímco název 8.3 bude jeho velká verze.
    • Příklad: TextFile.Txt stane se TEXTFILE.TXT .
  3. Pokud název souboru obsahuje znaky, které nejsou povoleny v názvu verze 8.3 (včetně mezery, která byla zakázána konvencí, i když ne pomocí API), nebo je některá část příliš dlouhá, je název zbavený neplatných znaků, jako jsou mezery a další tečky. Pokud název začíná tečkami, . jsou úvodní tečky odstraněny. Ostatní znaky, jako například, + se změní na podtržítko _ a písmena se vloží velkými písmeny. Vymazaný název je poté zkrácen na prvních 6 písmen základního jména , následuje vlnovka , následuje jedna číslice a tečka . , za kterou následují první 3 znaky přípony.
    • Příklad: TextFile.Mine.txt stane se TEXTFI~1.TXT (nebo TEXTFI~2.TXT by TEXTFI~1.TXT již mělo existovat). ver +1.2.text se stává VER_12~1.TEX . .bashrc.swp se stává BASHRC~1.SWP
  4. Ve všech verzích NT včetně Windows 2000 a novějších, pokud již existují alespoň 4 soubory nebo složky se stejnou příponou a prvních 6 znaků v jejich krátkých jménech, je oříznutá LFN místo toho zkrácena na první 2 písmena názvu (nebo 1, pokud název basen má pouze 1 písmeno), následované 4 hexadecimálními číslicemi odvozenými od neregistrované hodnoty hash názvu souboru, následovanou vlnovkou, následovanou jednou číslicí, následovanou tečkou . a prvními 3 znaky přípony.
    • Příklad: TextFile.Mine.txt stane se TE021F~1.TXT .
  5. Ve Windows 95, 98 a ME, pokud je více než 9 souborů nebo složek se stejnou příponou a prvních 6 znaků a v jejich krátkých názvech (takže ~1 pomocí ~9 přípon nestačí k vyřešení kolize), je název dále zkrácen na 5 písmena, následovaná vlnovkou, následovaná dvěma číslicemi počínaje od 10, následovaná tečkou . a prvními 3 znaky přípony.
    • Příklad: TextFile.Mine.txt stane TEXTF~10.TXT , pokud TEXTFI~1.TXT přes TEXTFI~9.TXT veškerou již existují.

NTFS , souborový systém používaný rodinou Windows NT , nativně podporuje LFN, ale pro starší aplikace jsou stále k dispozici názvy 8.3. To lze volitelně zakázat, aby se zlepšil výkon v situacích, kdy ve stejné složce existuje velké množství podobně pojmenovaných souborů.

ISO 9660 Systém souborů (používá se hlavně na kompaktních discích ) má podobné omezení na té nejzákladnější úrovni 1 s dodatečným omezením, že názvy adresářů nemohou obsahovat rozšíření a že některé znaky (zejména pomlčky ) nejsou povoleny v názvech souborů. Úroveň 2 umožňuje názvy souborů až 31 znaků, což je více kompatibilní s klasickými názvy souborů AmigaOS a klasickými systémy Mac OS .

Během protimonopolního případu společnosti Microsoft z roku 2001 byly názvy MICROS ~ 1 a MICROS ~ 2 vtipně používány k označení společností, které by mohly existovat po navrhovaném rozdělení společnosti Microsoft.

Kompatibilita

Tato starší technologie se používá v široké škále produktů a zařízení jako standard pro výměnu informací, jako jsou kompaktní flash karty používané ve fotoaparátech. VFAT LFN dlouhé názvy souborů zavedené Windows 95/98 / ME si zachovaly kompatibilitu. Ale VFAT LFN používaný v systémech založených na NT (Windows NT / 2K / XP) používá upravenou zkratku 8,3.

Pokud název souboru obsahuje pouze malá písmena, nebo jde o kombinaci malého názvu basen s příponou velkých písmen , nebo naopak; a nemá žádné speciální znaky a zapadá do limitu 8,3, položka VFAT není vytvořena v systému Windows NT a novějších verzích, jako je XP. Místo toho se používají dva bity v bajtu 0x0c položky adresáře k označení, že název souboru by měl být považován za zcela nebo částečně malá. Konkrétně bit 4 znamená malá přípona a bit 3 malá basename , což umožňuje kombinace jako example.TXT nebo HELLO.txt ne Mixed.txt . Několik dalších operačních systémů to podporuje. Tím se vytvoří problém zpětné kompatibility názvu souboru se staršími verzemi systému Windows (95, 98, ME), které při použití této přípony vidí názvy všech souborů s velkými písmeny, a proto mohou při převozu souboru změnit velká písmena, například na USB flash disk. To může způsobit problémy operačním systémům, které nevykazují chování malých a velkých písmen, jak to dělají DOS a Windows. Aktuální (> 2.6) verze Linuxu toto rozšíření při čtení rozpoznají; krátký název možnosti připojení určuje, zda se tato funkce použije při psaní. Pro MS-DOS můžete použít DOSLFN od Henrika Haftmanna.

Tabulka adresářů

Tabulka adresářů je speciální typ souboru, který představuje adresář. Každý soubor nebo adresář v něm uložený je reprezentován 32bajtovým záznamem v tabulce. Každá položka zaznamenává název, příponu, atributy ( archiv , adresář, skryté, jen pro čtení, systém a svazek), datum a čas vytvoření, adresu prvního klastru dat souboru / adresáře a nakonec velikost souboru soubor / adresář.

Legální znaky pro názvy souborů DOS zahrnují následující:

  • Velká písmena A - Z
  • Čísla 0 - 9
  • Mezera (ačkoli koncové mezery v základním názvu nebo příponě jsou považovány za výplň a nikoli za část názvu souboru, musí být v uvozovkách, které se mají použít na příkazovém řádku systému DOS, zahrnuty také názvy souborů s mezerami, a pokud je systém DOS příkaz je vytvořen programově, název souboru musí být uzavřen do dvojitých uvozovek ( "" ... "" ), když je zobrazen jako proměnná v programu vytvářejícím příkaz DOS.)
  • ! , # , $ , % , & , ' , ( , ) , - , @ , ^ , _ , ` , { , } , ~
  • Hodnoty 128–255 (i když jsou v systému DOS aktivní služby NLS , některé znaky interpretované jako malá písmena jsou neplatné a nedostupné)

To vylučuje následující znaky ASCII :

  • " , * , + , , , / , : , ; , < , = , > , ? , \ , [ , ] , |
    Windows / MS-DOS nemá shell znak escape
  • . ( U + 002E . FULL STOP ) v polích názvu a rozšíření, kromě . a .. položek (viz níže)
  • Malá písmena a - z , uložená jako A - Z na FAT12 / FAT16
  • Řídicí znaky 0–31
  • Hodnota 127 ( DEL )

Názvy souborů DOS jsou ve znakové sadě OEM . Kód 0xE5 jako první bajt (viz níže) dělá potíže při použití znaků extra-ASCII .

Položky adresáře v oblasti kořenového adresáře i v podadresářích mají následující formát:

Byte Offset Délka Popis
0x00 8 DOS název souboru (polstrovaný mezerami)

První bajt může mít následující speciální hodnoty:

0x00 Záznam je k dispozici a žádný další záznam se nepoužívá
0x05 Počáteční znak je ve skutečnosti 0xE5
0x2E Zadání tečky : buď . nebo ..
0xE5 Záznam byl dříve vymazán. Obslužné programy pro smazání souborů musí tento znak v rámci procesu mazání nahradit běžným znakem.
0x08 3 Přípona souboru DOS (polstrovaná mezerami, může být prázdná)
0x0b 1 Atributy souboru

První bajt může mít následující speciální hodnoty:

Bit Maska Popis
0 0x01 Pouze ke čtení
1 0x02 Skrytý
2 0x04 Systém
3 0x08 Štítek svazku
4 0x10 Podadresář
5 0x20 Archiv
6 0x40 Zařízení (pouze pro interní použití, nikdy nenalezeno na disku)
7 0x80 Nepoužitý

Hodnota atributu 0x0F se používá k označení položky dlouhého názvu souboru.

0x0c 1 Rezervováno; dva bity jsou používány NT a novějšími verzemi pro kódování informací o případech
0x0d 1 Vytvořte čas, jemné rozlišení: 10  ms jednotek, hodnoty od 0 do 199.
0x0e 2 Vytvořte čas. Hodina, minuta a sekunda jsou kódovány podle následující bitmapy:
Bity Popis
15–11 Hodiny (0–23)
10–5 Minuty (0–59)
4–0 Sekundy / 2 (0–29)

Upozorňujeme, že sekundy se zaznamenávají pouze v  2sekundovém rozlišení. Jemnější rozlišení pro vytváření souborů se nachází na offsetu 0x0d.

0x10 2 Vytvořit datum. Rok, měsíc a den jsou kódovány podle následující bitmapy:
Bity Popis
15–9 Rok (0 = 1980, 127 = 2107)
8–5 Měsíc (1 = leden, 12 = prosinec)
4–0 Den (1–31)
0x12 2 Datum posledního přístupu; viz offset 0x10 pro popis.
0x14 2 EA-Index (používaný OS / 2 a NT) ve FAT12 a FAT16, vysoké 2 bajty prvního čísla klastru ve FAT32
0x16 2 Čas poslední změny; viz offset 0x0e pro popis.
0x18 2 Datum poslední změny; viz offset 0x10 pro popis.
0x1a 2 První cluster ve FAT12 a FAT16. Nízké 2 bajty prvního clusteru na FAT32.
0x1c 4 Velikost souboru

Práce s krátkými názvy souborů v příkazovém řádku

Někdy může být žádoucí převést dlouhý název souboru na krátký název souboru, například při práci s příkazovým řádkem. K dosažení správného názvu souboru 8.3 lze dodržovat několik jednoduchých pravidel.

  1. Název souboru SFN může mít před tečkou maximálně 8 znaků. Pokud má více než to, musí být napsáno prvních 6, pak vlnovka ~ jako sedmý znak a číslo (obvykle 1) jako osmý. Číslo jej odlišuje od ostatních souborů se stejnými prvními šesti písmeny a stejnou příponou.
  2. Tečky jsou důležité a musí být použity i pro názvy složek (pokud je v názvu složky tečka). Pokud je v dlouhém názvu souboru / adresáře více teček, použije se pouze poslední. Předchozí tečky by měly být ignorovány. Pokud je za poslední tečkou více znaků než tři, použijí se pouze první tři.
  3. Obvykle:
    • Při převodu na SFN je třeba ignorovat mezery v názvech souborů.
    • Ignorujte všechna období kromě poslední. Nezahrnujte žádná další období, stejně jako mezery. Použijte poslední tečku, pokud existuje, a další znaky (až 3). Například pro .manifest by byl použit pouze .man.
    • Čárky, hranaté závorky, středníky, znaménka = a znaménka + se mění na podtržítka.
    • Malá a velká písmena nejsou důležitá, velká a malá písmena jsou zacházena stejně.

Chcete-li zjistit SFN nebo 8,3 názvy souborů v adresáři

použití: dir /x zobrazuje krátké názvy, pokud existují, a dlouhé názvy.

nebo: dir /-n zobrazuje pouze krátké názvy v původním formátu výpisu DIR.

V operačních systémech založených na Windows NT přijímají applety příkazového řádku ( cmd.exe ) dlouhé názvy souborů se zástupnými znaky (otazník ? a hvězdička * ); dlouhé názvy souborů s mezerami je třeba uvést do zvláštního znaku (tj. uvést je do jednoduchých nebo dvojitých uvozovek).

Počínaje systémem Windows Vista provádějí příkazy konzoly a applety PowerShellu omezené porovnávání vzorů tím, že povolují zástupné znaky v názvu souboru a každém podadresáři v cestě k souboru a tiše nahrazují první odpovídající položku adresáře (například změní aktuální adresář na ). C:\>CD \prog*\inter*C:\Program Files\Internet Explorer\

Viz také

Reference