8.3 Dateiname

Ein 8.3 Dateiname[1] (auch a genannt kurzer Dateiname oder Sfn) ist ein Dateiname Konvention von alten Versionen von DOS und Versionen von Microsoft Windows vor Windows 95 und Windows NT 3.5. Es wird auch in modernen Microsoft -Betriebssystemen als alternatives Dateiname an der verwendet langer Dateiname Für Kompatibilität mit Erbe Programme. Die Dateiname -Übereinkommen ist durch die begrenzt FETT Dateisystem. Ähnliche 8.3 -Dateibenennungsschemata haben sich auch früher vorhanden CP/m, TRS-80, Atari, und einige Daten allgemein und Digital Equipment Corporation Minicomputer -Betriebssysteme.

Überblick

8.3 Dateinamen sind auf höchstens acht Zeichen beschränkt (nach einem Verzeichnisspezifizierer), befolgt optional nach a Dateiname Erweiterung bestehend aus a Zeitraum . und höchstens drei weitere Charaktere. Für Systeme, die nur 8.3 Dateinamen unterstützen, werden überschüssige Zeichen ignoriert. Wenn ein Dateiname keine Erweiterung hat, ist ein Nachfolger . hat keine Bedeutung (das heißt, myfile und myfile. sind gleichwertig). Darüber hinaus, Datei und Verzeichnis Namen sind Großbuchstaben In diesem System sind normalerweise Systeme, die den 8.3 -Standard verwenden Fall-unempfindlich (Herstellung CamelCap.tpu dem Namen entspricht CAMELCAP.TPU). Allerdings bei Nicht 8.3 Betriebssysteme (wie fast jedes moderne Betriebssystem) Zugriff auf 8.3-Dateisysteme (einschließlich DOS-Formatiert Disketten, aber auch einige moderne Speicherkarten und vernetzte Dateisysteme), kann das zugrunde liegende System die Dateinamen intern verändern, um zu erhalten Fall und vermeiden Sie das Abschneiden von Briefen in den Namen Vfat.

VFAT und computergenerierte 8.3 Dateinamen

VfatEine Fettvariante mit einem erweiterten Verzeichnisformat wurde eingeführt in Windows 95 und Windows NT 3.5. Es erlaubte Mixed Case Unicode Lange Dateinamen (LFNS) Zusätzlich zu klassischen 8.3 -Namen mit mehreren Verwendung 32-Byte-Verzeichniseintragsdatensätze für lange Dateinamen (so wird nur einer von der alten 8.3 -Systemsoftware als gültiger Verzeichniseintrag anerkannt).

Um die Rückwärtskompatibilität mit Legacy-Anwendungen aufrechtzuerhalten (auf DOS und Windows 3.1) Bei FAT- und VFAT -Dateisystemen wird ein 8.3 -Dateiname für jeden LFN automatisch generiert, durch das die Datei weiterhin umbenannt, gelöscht oder geöffnet werden kann, obwohl der generierte Name (z. OVI3KV~N) kann wenig Ähnlichkeit mit dem Original zeigen. Bei NTFS -Dateisystemen kann die Generation von 8.3 Dateinamen ausgeschaltet werden.[2] Der 8.3 -Dateiname kann mit dem erhalten werden Kernel32.dll Funktion getshortPathName.[3][4]

Obwohl es keine Obligatorin gibt Algorithmus Zum Erstellen des 8.3 -Namens aus einem LFN verwendet Windows die folgende Konvention:[5]

  1. Wenn der LFN 8,3 Großbuchstaben ist, wird überhaupt kein LFN auf der Festplatte gelagert.
    • Beispiel: TEXTFILE.TXT
  2. Wenn das LFN 8,3 Mischkoffer beträgt, speichert der LFN den Namen gemischter Fall, während der Name 8.3 eine obere Version davon ist.
    • Beispiel: TextFile.Txt wird TEXTFILE.TXT.
  3. Wenn der Dateiname Zeichen enthält, die nicht in einem 8.3 -Namen erlaubt sind (einschließlich Raum, der durch die Konvention jedoch nicht durch die APIs abgelehnt wurde) oder entweder ein Teil zu lang ist, wird der Name von ungültigen Zeichen wie Räumen und zusätzlichen Perioden gestreift. Wenn der Name mit Perioden beginnt . Die führenden Perioden werden entfernt. Andere Charaktere wie z. + werden in die geändert unterstreichen _und Buchstaben werden in Großbuchstaben gestellt. Der abgestellte Name wird dann auf die ersten 6 Buchstaben seiner verkürzt Grundname, gefolgt von einem Tilde, gefolgt von einer einzigen Ziffer, gefolgt von einer Periode ., gefolgt von den ersten 3 Zeichen der Erweiterung.
    • Beispiel: TextFile.Mine.txt wird TEXTFI~1.TXT (oder TEXTFI~2.TXT, sollte TEXTFI~1.TXT existieren bereits). ver +1.2.text wird VER_12~1.TEX. .bashrc.swp wird BASHRC~1.SWP
  4. Auf allen NT -Versionen einschließlich Windows 2000 Und später, wenn mindestens 4 Dateien oder Ordner bereits mit derselben Erweiterung und den ersten 6 Zeichen in ihren kurzen Namen vorhanden sind, wird der Stripped LFN stattdessen auf die ersten 2 Buchstaben des Basennamens abgeschnitten (oder 1, wenn der Basisname nur 1 Buchstabe hat) , gefolgt von 4 hexadezimal Ziffern, die von einem undokumentierten Hascher des Dateinamens abgeleitet sind, gefolgt von einer Tilde, gefolgt von einer einzigen Ziffer, gefolgt von einer Periode ., gefolgt von den ersten 3 Zeichen der Erweiterung.
    • Beispiel: TextFile.Mine.txt wird TE021F~1.TXT.
  5. Unter Windows 95, 98 und mir, wenn mehr als 9 Dateien oder Ordner mit derselben Erweiterung und den ersten 6 Zeichen und in ihren kurzen Namen ~1 durch ~9 Suffixe reicht nicht aus, um die Kollision zu lösen), der Name wird weiter auf 5 Buchstaben abgeschnitten, gefolgt von einer Tilde, gefolgt von zwei Ziffern ab 10, gefolgt von einer Periode . und die ersten 3 Zeichen der Erweiterung.
    • Beispiel: TextFile.Mine.txt wird TEXTF~10.TXT wenn TEXTFI~1.TXT durch TEXTFI~9.TXT Alle existieren schon.

NTFS, ein Dateisystem, das von der verwendet wird Windows NT Familie unterstützt LFNs nativ, 8,3 Namen sind jedoch noch für ältere Anwendungen verfügbar. Dies kann optional deaktiviert werden, um die Leistung in Situationen zu verbessern, in denen eine große Anzahl ähnlich benannter Dateien im selben Ordner vorhanden sind.[2]

Das ISO 9660 Dateisystem (hauptsächlich verwendet auf CDs) hat ähnliche Einschränkungen auf der grundlegendsten Stufe 1, mit der zusätzlichen Einschränkung, dass Verzeichnisnamen keine Erweiterungen enthalten können und einige Zeichen (insbesondere einige Zeichen Bindestriche) sind in Dateinamen nicht erlaubt. Level 2 ermöglicht Dateinamen mit bis zu 31 Zeichen, besser kompatibel mit klassischen Amigaos und Klassischer Mac OS Dateinamen.

Kompatibilität

Diese Legacy -Technologie wird in einer Vielzahl von Produkten und Geräten als Standard für den Austausch von Informationen wie kompakte Flash -Karten verwendet, die in Kameras verwendet werden. Vfat lfn Lange Dateinamen eingeführt von Windows 95/98/ME beibehaltene Kompatibilität. Das VFAT-LFN, das für NT-basierte Systeme (Windows NT/2K/XP) verwendet wird, verwendet jedoch einen modifizierten 8.3-Shortnamen.

Wenn ein Dateiname nur Kleinbuchstaben enthält oder eine Kombination aus Kleinbuchstaben ist Grundname mit einem Großbuchstaben Verlängerung, oder umgekehrt; und hat keine Sonderzeichen und passt in die 8.3 -Grenzen, ein VFAT -Eintrag wird nicht unter Windows NT und späteren Versionen wie XP erstellt. Stattdessen werden zwei Bits in Byte 0x0c des Verzeichniseintrags verwendet, um anzuzeigen, dass der Dateiname als vollständig oder teilweise Kleinbuchstaben betrachtet werden sollte. Insbesondere bedeutet Bit 4 Kleinbuchstaben Verlängerung und bit 3 Kleinbuchstaben Grundname, was Kombinationen wie z. example.TXT oder HELLO.txt aber nicht Mixed.txt. Nur wenige andere Betriebssysteme unterstützen dies. Dies schafft eine Rückwärtskompatibilität Dateiname Mangling Problem mit älteren Windows-Versionen (95, 98, ME), die All-Oppercase-Dateinamen sehen, wenn diese Erweiterung verwendet wurde, und daher die Kapitalisierung einer Datei beim Transportieren ändern kann, z. B. auf einem USB-Flash-Laufwerk. Dies kann zu Problemen für Betriebssysteme führen, die das von Fall unempfindliche Dateiname-Verhalten wie DOS und Windows nicht aufweisen. Linux wird diese Erweiterung beim Lesen erkennen.[6] die Mount -Option kurzer Name Bestimmt, ob diese Funktion beim Schreiben verwendet wird.[7] Für MS-DOS können Sie Henrik Haftmanns doslfn verwenden.[8]

Verzeichnis Tabelle

Eine Verzeichnistabelle ist eine spezielle Dateiart, die ein Verzeichnis darstellt. Jede darin gespeicherte Datei oder Verzeichnis wird durch einen 32-Byte-Eintrag in der Tabelle dargestellt. Jeder Eintrag aufgezeichnet den Namen, die Erweiterung, Attribute (Archiv, Verzeichnis, versteckt, schreibgeschützt, System und Volumen), Datum und Uhrzeit der Erstellung, die Adresse des ersten Cluster der Datei/Verzeichnisdaten und schließlich die Größe des Datei/Verzeichnisses.

Rechtliche Charaktere für DOS -Dateinamen enthalten Folgendes:

  • Großbuchstaben AZ
  • Zahlen 09
  • Raum (obwohl ablaufende Räume entweder im Grundnamen oder in der Erweiterung als Polster und nicht als Teil des Dateinamens angesehen werden, müssen auch Dateinamen mit Leerzeichen in Zitate eingeschlossen sein Der Befehl wird programmgesteuert erstellt, der Dateiname muss in doppelten Doppelquoten eingeschlossen sein (""..."") Wenn sie als Variable innerhalb des Programms angesehen werden, erstellen Sie den Befehl dos.)
  • !, #, $, %, &, ', (, ), -, @, ^, _, `, {, }, ~
  • Werte 128–255 (wenn NLS Die Dienste sind in DOS aktiv, einige als Kleinbuchstaben interpretierte Zeichen sind ungültig und nicht verfügbar)

Dies schließt Folgendes aus ASCII Figuren:

  • ", *, +, ,, /, :, ;, <, =, >, ?, \, [, ], |[9]
    Windows/MS-DOS hat keine Shell Escape-Zeichen
  • . ( U+002E . PUNKT) innerhalb von Namen und Erweiterungsfeldern, außer in . und .. Einträge (siehe unten)
  • Kleinbuchstaben az, gespeichert als AZ auf fat12/fat16
  • Steuerzeichen 0–31
  • Wert 127 (Del)[zweifelhaft ]

Die DOS -Dateinamen sind in der OEM -Zeichensatz. Code 0xe5 als erstes Byte (siehe unten) macht Probleme, wenn Extra-Ascii-Zeichen werden verwendet.

Verzeichniseinträge sowohl im Root Directory -Bereich als auch in Unterverzeichnissen sind aus dem folgenden Format:

Byte -Offset Länge Beschreibung
0x00 8 Dos Dateiname (gepolstert mit Räumen)

Das erste Byte kann die folgenden speziellen Werte haben:

0x00 Der Eintrag ist verfügbar und es wird kein nachfolgender Eintrag verwendet
0x05 Der erste Charakter ist tatsächlich 0xe5
0x2e Punkteintrag: entweder . oder ..
0xe5 Der Eintrag wurde zuvor gelöscht. Datei wahnsinnig Versorgungsunternehmen müssen diesen Charakter durch einen regulären Charakter als Teil des UNTELETION -Prozesses ersetzen.
0x08 3 DOS -Dateierweiterung (mit Leerzeichen gepolstert, kann leer sein)
0x0b 1 Dateiattribute

Das erste Byte kann die folgenden speziellen Werte haben:

Bisschen Maske Beschreibung
0 0x01 Schreibgeschützt
1 0x02 Versteckt
2 0x04 System
3 0x08 Volumenetikett
4 0x10 Unterverzeichnis
5 0x20 Archiv
6 0x40 Gerät (nur interner Gebrauch, nie auf der Festplatte gefunden)
7 0x80 Ungebraucht

Ein Attributwert von 0x0f wird verwendet, um einen langen Dateinameneintrag zu bezeichnen.

0x0c 1 Reserviert; Zwei Bits werden von NT- und späteren Versionen verwendet, um Fallinformationen zu codieren
0x0d 1 Zeit erstellen, feine Auflösung: 10Frau Einheiten, Werte von 0 bis 199.
0x0e 2 Zeit schaffen. Die Stunde, Minute und Sekunde werden nach dem folgenden Bitmap codiert:
Bits Beschreibung
15–11 Stunden (0–23)
10–5 Minuten (0–59)
4–0 Sekunden/2 (0–29)

Notiere dass der Sekunden wird nur zu einem 2 aufgezeichnetzweite Auflösung. Eine feinere Auflösung für die Dateierstellung wird bei Offset 0x0d gefunden.

0x10 2 Erstellungsdatum. Das Jahr, der Monat und der Tag sind nach dem folgenden Bitmap codiert:
Bits Beschreibung
15–9 Jahr (0 = 1980, 127 = 2107)
8–5 Monat (1 = Januar, 12 = Dezember)
4–0 Tag (1–31)
0x12 2 Letzter Zugriffsdatum; Siehe Offset 0x10 für die Beschreibung.
0x14 2 Ea-Index (verwendet von OS/2 und nt) in FAT12 und FAT16, hohe 2 Bytes der ersten Clusterzahl in FAT32
0x16 2 Letzte modifizierte Zeit; Siehe Offset 0x0e für die Beschreibung.
0x18 2 Zuletzt geändertes Datum; Siehe Offset 0x10 für die Beschreibung.
0x1a 2 Erster Cluster in FAT12 und FAT16. Niedrige 2 Bytes des ersten Clusters in FAT32.
0x1c 4 Dateigröße

Arbeiten mit kurzen Dateinamen in einer Eingabeaufforderung

Manchmal kann es wünschenswert sein, einen langen Dateinamen in einen kurzen Dateinamen umzuwandeln, beispielsweise bei der Arbeit mit der Eingabeaufforderung. Einige einfache Regeln können befolgt werden, um den richtigen 8.3 -Dateinamen zu erreichen.

  1. Ein SFN -Dateiname kann vor dem Punkt höchstens 8 Zeichen haben. Wenn es mehr als das hat, muss die ersten 6 geschrieben werden, dann eine Tilde ~ als siebter Zeichen und als Zahl (normalerweise 1) als achtes. Die Zahl unterscheidet es von anderen Dateien mit den gleichen ersten sechs Buchstaben und derselben Erweiterung.
  2. Punkte sind wichtig und müssen auch für Ordneramen verwendet werden (wenn im Ordnernamen ein Punkt vorhanden ist). Wenn im Namen der langen Datei/des Verzeichnisses mehrere Punkte vorhanden sind, wird nur der letzte verwendet. Die vorhergehenden Punkte sollten ignoriert werden. Wenn es nach dem letzten Punkt mehr Zeichen als drei gibt, werden nur die ersten drei verwendet.
  3. Allgemein:
    • Alle Leerzeichen in den Dateinamen sollten beim Umwandeln in SFN ignoriert werden.
    • Ignorieren Sie alle Perioden mit Ausnahme der letzten. Fügen Sie keine anderen Perioden ein, genau wie die Räume. Verwenden Sie die letzte Periode, wenn überhaupt, und die nächsten Zeichen (bis zu 3). Zum Beispiel würde für .manifest nur der Mann verwendet.
    • Kommas, Quadratklammern, Semikolons, = Zeichen und + Zeichen werden in Unterstriche geändert.
    • Der Fall ist nicht wichtig, der obere Fall und untere Fallzeichen werden gleich behandelt.

Um sicher zu finden, die Namen der SFN oder 8.3 der Dateien in einem Verzeichnis

verwenden: dir /x Zeigt die kurzen Namen an, wenn es einen und die langen Namen gibt.

oder: dir /-n Zeigt nur die kurzen Namen im ursprünglichen Dir Listing -Format an.

Im Windows NT-basierte Betriebssysteme, Eingabeaufforderung (Eingabeaufforderung (cmd.exe) Applets akzeptieren lange Dateinamen mit Wildcard -Charaktere (Fragezeichen ? und Sternchen *);Lange Dateinamen mit Plätzen müssen entkommen (d. H. In einzelnen oder doppelten Zitaten eingeschlossen).[10]

Beginnen mit Windows Vista, Konsolenbefehle und Power Shell Applets werden limitiert Musteranpassung durch die Erlaubnis von Wildcards in Dateiname und jeweils Unterverzeichnis in dem Dateipfad und stillschweigend den ersten passenden Verzeichniseintrag (zum Beispiel, C:\>CD \prog*\inter* wird das aktuelle Verzeichnis an ändern an C:\Program Files\Internet Explorer\).

Siehe auch

Verweise

  1. ^ "Benennung einer Datei". Microsoft Developer Network. Archiviert von das Original am 2008-10-15. Abgerufen 2007-03-22.
  2. ^ a b "So deaktivieren Sie die Erstellung von 8.3 Namen auf NTFS -Partitionen". Microsoft. Abgerufen 2021-02-26.
  3. ^ "GetShortPathName -Funktion". Msdn. Archiviert von das Original Am 2015-10-01. Abgerufen 2014-09-15.
  4. ^ "Wie man einen kurzen Dateinamen von einem langen Dateinamen bekommt". Microsoft. Abgerufen 2021-02-26.
  5. ^ "Wie Windows 8.3 Dateinamen aus langen Dateinamen generiert". Microsoft.
  6. ^ "Dir.c \ fat \ fs - Kernel/Git/Torvalds/Linux.git - Linux -Kernel -Quellbaum". git.kernel.org. Abgerufen 2018-06-25.
  7. ^ "Mount (8): Mount Filesystem - Linux Man Page".
  8. ^ "Doslfn".
  9. ^ Andries Brouwer (2007-12-26). "Verzeichniseintrag". Das Fat -Dateisystem. Abgerufen 2013-07-30.
  10. ^ "Verwenden von langen Dateinamen".