8.3-as fájlnév

régi Windows-verziókban használt fájlnév-konvenció From Wikipedia, the free encyclopedia

Remove ads

A 8.3-as fájlnév[1] vagy rövid fájlnév (angolul short filename vagy SFN) a Microsoft Windows régi, Windows 95-öt, illetve Windows NT 3.51-et megelőző verzióiban és a DOS alatt használt fájlnév-konvenció. Az elavult programokkal való visszamenőleges kompatibilitás miatt a Microsoft modern operációs rendszereiben is használják, a hosszú fájlnevek alternatív rövid párjaként. A névhosszúság-korlátozás tükröződik a FAT fájlrendszer kialakításában is. Hasonló 8.3-as fájlnévsémák léteztek nem csak a modellül szolgáló korábbi CP/M, de az Atari, és egyes Data General és Digital Equipment Corporation miniszámítógépes operációs rendszerek alatt is.

Remove ads

Áttekintés

A 8.3-as fájlnevek legfeljebb nyolc karakteres alapnévből, és az ezt követő opcionális pontból) „.” és a legfeljebb három karakteres kiterjesztésből állnak. A kiterjesztés nélküli fájlok esetében a záró pontnak nincs jelentősége (tehát a „myfile” és a „myfile.” ekvivalensek). Joker karakterek használatánál a fájlnév belső reprezentációja a pont elhagyásával egymás mögé írt 11 karakter, ahol a fájlnév 8, illetve a kiterjesztés 3 karakterét szükség szerint szóközökkel egészítik ki (tehát ABCD.TXT-ből ABCD····TXT lesz).[2] A fájl- és könyvtárnevek nagybetűsek, bár a 8.3-as fájlneveket használó rendszerek általában amúgy sem különböztetik meg a kis- és nagybetűket.

A FAT fájlrendszer egy változatában, a Windows 95-ben és Windows NT 3.5-ben bevezetett, kiterjesztett könyvtárstruktúrával rendelkező VFAT-ban, jelentek meg a kis- és nagybetűt is kezelő, Unicode (UTF-16) fájlnevek a klasszikus 8.3-as nevek mellett. Az elavult, DOS-os vagy 16 bites windowsos programokkal való visszamenőleges kompatibilitás miatt minden hosszú fájlnévhez automatikusan létrehozásra kerül egy 8.3-as fájlnév, amivel a régi programok továbbra is képesek megnyitni, átnevezni, letörölni stb. a fájlt. A 8.3-as fájlnév a GetShortPathName Kernel32.dll-függvénnyel kérdezhető le.[3][4]

Bár nincs kötelezően alkalmazandó algoritmus a hosszú fájlnévből a rövid név megalkotására, a Windows az alábbi konvenciót követi:[5]

  1. Ha a hosszú fájlnév csupa nagybetűs vagy csupa kisbetűs és 8.3 karakter hosszú (tehát megfelel a rövid fájlnév specifikációjának), akkor nem kerül a lemezen külön eltárolásra, csak a rövid fájlnév tárolódik.
    • Példa: „TEXTFILE.TXT”, „textfile.txt”
  2. Ha a hosszú fájlnév 8.3 karakter hosszú, de tartalmaz kis- és nagybetűket is, a hosszú fájlnév a vegyes nevet fogja tartalmazni, a 8.3-as pedig a csupa nagybetűs változatát.
    • Például: „TextFile.Txt” rövid neve: „TEXTFILE.TXT”.
  3. Ha a fájlnévben a 8.3-as névben nem megengedett karakterek vannak (köztük a szóköz, amit az API-k nem tiltanak, csak a konvenció) vagy bármelyik része túl hosszú, a név érvénytelen karakterei, mint a szóközök és extra pontok kihúzásra kerülnek. Más karakterek, mint a pluszjel („+”) aláhúzásjelre „_” változnak. A megrövidített név első 6 betűje kerül eltárolásra, ezután egy tilde („~”) következik, majd egy egyjegyű szám, egy pont „.”, és a kiterjesztés első 3 karaktere. A végeredmény csupa nagybetűvel kerül tárolásra. Windows 95/98/ME alatt a helyi kódlap (OEM kódtábla) karakterei is szerepelhetnek a rövid névben, például az „LLLáóú.Txt” rövid neve: „LLLáóú.TXT” a Windows 98 VFAT drivere alatt, de „LLL~1.TXT” a Windows XP alatt.
    • Példa: „TextFile1.Mine.txt” rövid neve „TEXTFI~1.TXT” (vagy „TEXTFI~2.TXT”, ha az előző már létezne a könyvtárban). A „ver +1.2.text” rövid neve „VER_12~1.TEX” lesz.
  4. A Windows 2000-rel kezdve ha legalább 4 olyan fájl vagy könyvtár létezik egy adott könyvtárban, melyek rövid nevének első 6 karaktere megegyezik, kissé más módszerrel áll elő a rövid fájlnév: az érvénytelen karakterektől megfosztott bázisnév első 6 helyett az első 2 karaktert veszi csak figyelembe (0-t vagy 1-et, ha 0 vagy 1 érvényes karakter marad), amit a tilde előtti további 4 karakter követ. Ez a 4 karakter a fájlnévből képezett dokumentálatlan hash függvény hexadecimális értékéből adódik. A rövid fájlnév többi része a szokott módon képződik. Akkor is a hashelt módszer lép életbe, ha a kiindulási fájlnév háromnál kevesebb érvényes karaktert tartalmaz.
    • Példa: „TextFile.Mine.txt” rövid neve „TE021F~1.TXT”.
    • Példa: „ő.txt” rövid neve „3D36~1.TXT”.

Ha a „2 eredeti karakter +4 karakter hash + a tilde után 1 karakternyi sorszám” séma kifogy a lehetőségekből, következik a „2 eredeti karakter +3 karakter hash + a tilde után 2 karakternyi sorszám” séma, a „2 eredeti karakter +2 karakter hash + a tilde után 3 karakternyi sorszám” séma, a „2 eredeti karakter +1 karakter hash + a tilde után 4 karakternyi sorszám” séma, a „2 eredeti karakter + a tilde után 5 karakternyi sorszám” séma, végül az „1 eredeti karakter + a tilde után 6 karakternyi sorszám” séma (100 000-től indulva, 999 998-ig). Ezután a fájllétrehozási kérelem „A kért műveletet a fájlrendszer egy korlátozása miatt nem lehetett végrehajtani” hibaüzenetet generál (2,14 millió fájl körül). A Windows NT-családban bevezetett NTFS fájlrendszer natívan hosszú fájlneveket tárol, de 8.3-as fájlnevek itt is létrejönnek az elavult alkalmazások számára. Ez opcionálisan kikapcsolható, ami megnöveli a fájlrendszer teljesítményét az olyan esetekben, amikor nagy számú, hasonló nevű fájlt kell létrehozni ugyanabban a könyvtárban.[6]

A kompaktlemezeken elterjedt ISO 9660 fájlrendszer legegyszerűbb, Level 1-es változatának a 8.3-as fájlnevekhez hasonló korlátozásai vannak, azzal az eltéréssel, hogy a könyvtárneveknek nem lehet kiterjesztésük és egyes karakterek (köztük a kötőjel) nem szerepelhetnek a fájlnevekben. A Level 2 a Mac OS-szel való kompatibilitás miatt 31 karakteres fájlneveket is megenged. Az OS/2 a kiterjesztett attribútumok (Extended Attributes, EA) segítségével valósította meg a hosszú fájlnevek támogatását, még a VFAT megjelenése előtt; így a VFAT hosszú fájlneveit az OS/2 nem képes értelmezni, sem az EA hosszú fájlneveket a Windows.

A Microsoft elleni antitrösztperek során viccesen MICROS~1 és MICROS~2 néven emlegették a Microsoft tervezett felosztása után majdan létrejövő cégeket.[7]

Remove ads

Kompatibilitás

Az elavult 8.3-as fájlneveket számos eszközben használják kváziszabványként adatcserére, például a fényképezőgépek CompactFlash kártyáiban. A Windows 95-szériában a VFAT-tal bevezetett hosszú fájlnevek megőrizték a kompatibilitást; az NT-alapú (NT/2K/XP/Vista/Win7) rendszerek VFAT-ja azonban kissé eltérő módon képezi a rövid fájlneveket.

Ha a fájlnév kizárólag kisbetűket tartalmaz, vagy egy kisbetűs alapnévből és nagybetűs kiterjesztésből áll, vagy fordítva; nincsenek benne speciális karakterek, és belefér a 8.3-as hosszúságlimitbe, a Windows NT-alapú operációs rendszerekben nem jön létre VFAT hosszú fájlneves könyvtárbejegyzés. Ehelyett a könyvtárbejegyzés 0x0c bájtjának két bitjét használják arra, hogy a fájlnév teljes vagy részleges kisbetűs írásmódját jelöljék. Részletesebben, a 4. bit a kisbetűs kiterjesztést, a 3. bit a kisbetűs alapnevet jelöli. Ez lehetővé tesz olyan kombinációk lejegyzését, mint „example.TXT” vagy „HELLO.txt”, de például a „Vegyes.txt” leírásához már hosszúfájlnév-bejegyzés szükséges. Ezt a megoldást kevés más operációs rendszer támogatja. Ez némi kompatibilitási problémát okoz a régebbi Windows-verziókkal (95, 98, ME), melyek hosszúfájlnév-bejegyzés hiányában csupa nagybetűsnek tekintik a fájlnevet, így például egy pendrájvon átadott fájl neve megváltozhat. A Linux 2.6.x verziói képesek voltak kezelni ezt a kiterjesztést;[8] a „shortname” mount opció határozza meg, hogy a kötetre íráskor használja-e a Linux ezt a funkciót.[9]

Remove ads

Könyvtárbejegyzés

A könyvtárbejegyzés (directory table) egy könyvtárat megtestesítő speciális fájl. A könyvtárbejegyzésen belül minden, a könyvtárban található fájlhoz vagy alkönyvtárhoz egy-egy 32 bájtos bejegyzés tartozik. A bejegyzések tárolják a fájl alapnevét, kiterjesztését, attribútumait (archív, könyvtár, rejtett, csak olvasható, rendszer, illetve kötet), a létrehozás dátumát és idejét, a fájl vagy könyvtár első helyfoglalási egységének címét, végül méretét.

A DOS fájlnevekben használható karakterek közé tartoznak::

  • Az ábécé nagybetűi AZ
  • Számjegyek 09
  • Szóköz (bár az alapnév vagy a kiterjesztés végén található szóközöket csak helykitöltőnek tekinti, nem a fájlnév részének; továbbá a szóközöket tartalmazó fájlneveket nem lehet DOS parancssorból elérni, megfelelő escaping rendszer hiányában)
  • ! # $ % & ' ( ) - @ ^ _ ` { } ~
  • A 128–255 közti kódok

Ez a következő ASCII karaktereket zárja ki:

  • " * / : < > ? \ [ ] |
    Windows/MS-DOS alatt nincs shell escape character
  • A kisbetűket az
    nagybetűkként AZ tárolja FAT12/FAT16 alatt
  • Vezérlőkarakterek 0–31
  • 127-es kód (DEL)

Ha a fájlnév első bájtjaként 0xE5 szerepel, az gondot okozhat a cirill betűs KOI8 kódolás használatakor mivel a cirill „Е” nagybetűnek felel meg. Egyes operációs rendszerek, mint az ANDOS ezért automatikusan lecserélték a hasonló rajzolatú latin betűre.

A DOS fájlnevek OEM karakterkészlettel tárolódnak.

A könyvtárbejegyzések formátuma a gyökérkönyvtártól kezdve a következő:

További információk Bájt címe, Hossz ...
Remove ads

Hosszú fájlnév konvertálása rövid fájlnévre

Néhány (nem általánosan igaz) ökölszabály a hosszú fájlnévből a rövid fájlnév megállapítására.

1. A rövid fájlnév legfeljebb 8 karaktert tartalmazhat a pont előtt. Ha több lenne, az első 6 karakter leírása után egy tilde (~) következik, majd egy szám (1-gyel kezdődően) a 8. karakterként. A szám különbözteti meg az első hat karakterben és kiterjesztésben megegyező nevű fájlokat.

2. Általánosan:

  • A fájlnevekben található szóközök és nem ASCII karakterek konvertáláskor eldobásra kerülnek
  • Az utolsó ponton kívül az összes eldobásra kerül.
  • A vesszők, szögletes zárójelek aláhúzásra cserélődnek.
  • A kis- és nagybetűk egyformán kezelődnek.

Egy könyvtár rövid fájlneveinek kilistázása:

A dir /x a hosszú nevekkel együtt a rövid neveket is listázza (ha utóbbiak léteznek)

A dir /-n kizárólag a rövid fájlneveket listázza, az eredeti DIR listázási formátumban.

Remove ads

Kapcsolódó szócikkek

Jegyzetek

Fordítás

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads