Ich schreibe eine Dateinamen-E / A-Prozedur in der Assemblersprache x86-16. Es dauert acht Zeichen (ich muss keine langen Dateinamen unterstützen) von der Tastatur und druckt sie in ein Texteingabefeld auf dem Bildschirm.
Im Moment erlaube ich Zahlen, Groß- / Kleinbuchstaben, Unterstriche und Bindestriche.
Ich möchte alle legalen Symbole zulassen, kann jedoch keine offizielle Liste der verbotenen Zeichen finden. Der gesunde Menschenverstand sagt mir, dass Schrägstriche illegal sind, aber wenn ich raten müsste, würde ich sagen, dass das Pluszeichen legal ist. (edit: Es ist nicht!)
Ich ignoriere das Punktzeichen bereits, da mein Code das Anhängen des Punkts und der Dateierweiterung automatisch handhabt.
filenames
ms-dos
data-validation
Mein Leben ist ein Käfer.
quelle
quelle
+,;[]
Leerzeichen unda-z
sind in Windows aber nicht in DOS erlaubt. Der Explorer meldet den Fehler "Ein Dateiname darf keines der folgenden Zeichen enthalten.\ / : * ? " < > |
Antworten:
Eine kurze Zusammenfassung finden Sie auf Wikipedia :
https://en.wikipedia.org/wiki/8.3_filename#Directory_table
Und hier ist, was MS-DOS 6 Benutzerhandbuch offiziell gesagt
Dies ist von PC-DOS 7:
Benutzerhandbuch - PC DOS 7
Das FAT-Dateisystem
Wenn Sie sich auch für MS-DOS 5.0 interessieren, dann ist es hier .
quelle
CON
,PRN
,AUX
,NUL
,COM1
,COM2
,COM3
,COM4
,COM5
,COM6
,COM7
,COM8
,COM9
,LPT1
,LPT2
,LPT3
,LPT4
,LPT5
,LPT6
,LPT7
,LPT8
, undLPT9
sind auch nicht zulässig (siehe hier )Genau genommen sollten Sie als MS / PC / DR-DOS-Anwendungsprogrammierer das Betriebssystem nach diesen Informationen fragen. INT 0x21 mit AX = 0x6505 gibt einen Zeiger auf die sogenannte
FCHAR
NLS-Tabelle für Ihr Land und Ihre Codepage zurück. In dieser Tabelle sind eine Reihe von Zeichen und eine weitere Reihe von Zeichen aufgeführt, mit denen Dateinamen abgeschlossen werden.Theoretisch variiert es je nach Land und Codepage. Die Tatsache, dass es nicht formell in die OS / 2-Steuerprogramm-API übernommen wurde und die Tatsache, dass FreeDOS über alle Codepages und Länder hinweg eine Tabelle enthält, zeigt, dass es in der Praxis weitgehend unveränderlich ist.
Weitere Lektüre
quelle
Ich habe dies in einem Handbuch für MS-DOS 3.3 gefunden. Ich lasse 6.22 laufen, aber es trifft wahrscheinlich immer noch zu. Ich habe mich geirrt, dass '+' erlaubt ist.
quelle
Wenn Sie nur den Dateinamen validieren möchten, können Sie ihn verwenden,
INT 21H/AH=60H (TRUENAME - CANONICALIZE FILENAME OR PATH)
nachdem Sie sichergestellt haben, dass der übergebene Dateiname keinen Doppelpunkt oder Backslash enthält (diese werden möglicherweise als Laufwerksbuchstaben und Verzeichnisse behandelt): Die Funktion verwendet den vorgeschlagenen Dateinamen und versucht, die Kanonisierung durchzuführen es durch Großschreibung der Buchstaben und Überprüfung auf ungültige Zeichen (es fügt auch einen Laufwerksbuchstaben / Servernamen und Pfad hinzu.)Im Pseudocode:
quelle