Wenn ich versuche, eine Datei zu speichern, erhalte ich unter Windows die Meldung, dass der Dateiname ungültig ist, wenn ich im Namen Sonderzeichen (z. B. einen Doppelpunkt, ein Fragezeichen oder ein Ausrufezeichen) verwende.
Warum das?
Wenn ich versuche, eine Datei zu speichern, erhalte ich unter Windows die Meldung, dass der Dateiname ungültig ist, wenn ich im Namen Sonderzeichen (z. B. einen Doppelpunkt, ein Fragezeichen oder ein Ausrufezeichen) verwende.
Warum das?
Antworten:
Es gibt verschiedene Zeichen, die für Windows eine besondere Bedeutung haben (und für DOS, woher die meisten Zeichen ursprünglich stammten).
von MSDN :
Ein Dateiname darf keines der folgenden Zeichen enthalten:
\ /: *? "<> |
/
ist ein Schalter (und auch ein Verzeichnis-Trennzeichen).
\
ist ein Verzeichnisseparator.
:
ist ein Laufwerksbezeichner.
*
und ?
sind Platzhalter, die bei der Suche verwendet werden.
"
ist eine Möglichkeit, Leerzeichen in Parametern zuzulassen.
<
und >
sind Umleitungen, die die Eingabe und Ausgabe eines Programms von etwas anderem als Bildschirm / Tastatur ermöglichen.
|
ist eine Pipe, mit der die Ausgabe eines Programms als Eingabe für das nächste Programm verwendet werden kann.
\
?
*
und "
sind die einzigen, die in der aktuellen Syntax wirklich benötigt werden, da die anderen Zeichen nur außerhalb von Anführungszeichen nützlich sind. Die Ausnahme ist: das ist nur nützlich als das zweite Zeichen, das verboten werden könnte, während es an anderer Stelle erlaubt wird. Mit anderen Worten, keine Datei mit dem Namen A:A letter's story.txt
, aber kein Problem mit einer Datei mit dem NamenSarah: My favorite cat.txt
<>"
sind reservierte Platzhalterzeichen. Windows verwendet sie, um die komplexe Semantik für DOS *?.
bei der Übersetzung in natives NT zu implementieren , das eine einfache Semantik für hat *?.
. Die sechs Platzhalterzeichen sind reserviert, da Windows den Platzhalterabgleich im Dateisystem selbst, dh direkt im NtQueryDirectoryFile
Systemaufruf, ohne Escape-Mechanismus implementiert . In Unix werden Platzhalter auf Anwendungsebene implementiert, normalerweise durch eine Shell, die das Escape-Verfahren unterstützt.
:
in der Regel Dateinamen, nicht aber Dateipfade reserviert sind. Es wird für Gerätenamen und als Begrenzer für Dateistreams verwendet (z. B. "Dateiname: Streamname: Streamtyp"). Auch einige Dateisysteme wie die VirtualBox Shared-Ordner Dateisystem ermöglichen :
, |
und ASCII - Steuerzeichen (1-31) in Dateinamen, aber sie sind in allen Microsoft-Dateisystemen reserviert , außer für das Named-Pipe - Dateisystem.