Mir ist gerade aufgefallen, dass es nicht möglich ist, einen Ordner zu benennen ._.
- er wird ._
stattdessen benannt. Manchmal verschwindet es direkt nach dem Benennen, wird aber nach dem Aktualisieren der Ansicht wieder angezeigt. Windows scheint ein Problem mit Punkten am Ende eines Dateinamens zu haben - warum ist das so?
74
.
in Windows gestolpert sind .cd -- -_-
möglicherweise. Dies--
ist eine häufige Markierung für das Ende von Optionen.--
allein bedeutet " Dies ist das Ende der Optionen. Behandle alles, was mit-
" beginnt, als wörtlichen Wert. " Gerade getestet:mkdir -- -_-
undcd -- -_-
funktioniert wie erwartet../-_-
sollte das auch funktionieren.cd "-_-"
verwendet die Shell die Anführungszeichen für die Gruppierung, behandelt sie jedoch nicht als Teil des Arguments. es Fehler mitinvalid option
Antworten:
Windows erfordert normalerweise, dass Dateien keine Erweiterung oder eine Erweiterung haben, die mindestens ein Zeichen lang ist. Es ist nicht cool mit Erweiterungen der Länge Null, dh Dateinamen, die mit enden
.
. Ordner können auch Erweiterungen haben. Daher lassen Windows ihre Namen nicht mit einem enden.
. Quelle aus dem Artikel, den DavidPostill verlinkt hat :(Hervorheben von mir.) Wenn Sie versuchen, eine Datei oder ein Verzeichnis mit einem Punkt zu beenden, geht Windows einfach davon aus, dass Sie keine Erweiterung möchten, und entfernt sie daher, auch wenn Sie sie mit
md
einer Eingabeaufforderung erstellen .Gefahrenzone! Wenn Sie möchten, dass ein Ordnername endet
.
, müssen Sie die Magic Raw-Reihenfolge zum Überschreiben von verwenden\\?\
. In einer Eingabeaufforderungmd \\?\C:\path\to\container\._.
wird zwar ein Ordner mit dem Namen erstellt._.
, aber viele Programme werden Probleme damit haben, auch der Explorer:Ein solches Verzeichnis kann nur mit dem
rd
folgenden\\?\
Namen entfernt oder mit dem kurzen Namen (8.3,dir /x
) umbenannt werden.quelle
dir /x
macht es ziemlich einfach, und es gibt andere Male, in denen dieser Name praktisch ist.Windows scheint ein Problem mit Punkten am Ende eines Dateinamens zu haben? Warum ist das?
Der unten stehende Quelllink enthält nähere Informationen zu den Regeln für die Benennung.
Quellennamensdateien , Pfade und Namespaces
quelle
Es ist kein Fehler. Es ist beabsichtigt, Kompatibilitätsprobleme zu vermeiden.
Es ist ein Überbleibsel aus der alten DOS-Zeit.
In den Dateisystemen FAT12 (Diskette) und FAT16 (FAT16 vor der in Windows 95 eingeführten Unterstützung langer Dateinamen) wurden Dateinamen nur in 11 Bytes gespeichert:
8 Bytes für den Namen, 3 für die Erweiterung. Der "Punkt" zwischen Name und Endung wurde nicht einmal gespeichert. Es wurde impliziert und automatisch zu Anzeigezwecken hinzugefügt.
Verzeichnisse hatten überhaupt keine Erweiterungen. Stattdessen wurden die 3 Bytes für die Erweiterung mit "$" Zeichen gefüllt (die in echten Namen unzulässig waren).
Da Windows immer noch mit diesem Explorer kompatibel ist und viele andere Windows-Komponenten stillschweigend ausgeführt werden, wird die Wartezeit ausgeblendet, um Kompatibilitätsprobleme zu vermeiden.
Wie andere angegeben haben, können Sie solche Ordner mithilfe der RAW-Semantik (\\? \ Präfix vor dem absoluten Pfadnamen) bearbeiten.
Hinter den Kulissen haben NTFS und Netzwerk-Dateisysteme keine Probleme mit solchen Dateien und Ordnern. Der Explorer versucht lediglich zu verhindern, dass der Benutzer etwas erstellt, das Probleme für andere Software verursachen kann.
(Tatsächlich gibt es auch einige andere
Reste : Dateinamen wie COM, COM1, COM2, AUX, PRN, LPT, LPT1, LPT2, LPT3, CON können ähnliche Probleme verursachen, bei denen der Explorer und viele andere Windows-Teile verwirrt werden weil diese Namen "reservierte" Namen sind, die ebenfalls aus der DOS-Zeit stammen.)
quelle
mkdir testfile.name
) und zeigen Sie dessen DOS-Namen in Windows (dir /x
) an - Sie erhaltenTESTFI~1.NAM
wie erwartet.Das Problem hierbei ist, dass Windows (DOS) 8.3-Dateinamen auf FAT-Dateisystemen zulässt. Bedeutung, 8 Zeichen, gefolgt von a. gefolgt von drei Zeichen. Unter Unix und Linux sind alle Zeichen außer / und \ 0 zulässig. \ 0 ist das C-Zeichenfolge-Abschlusszeichen und / das Verzeichnis-Trennzeichen. Alles andere kann benutzt werden.
Windows 95 hat dieses Problem umgangen, indem eine Datenbank mit kurzen (8.3) Dateinamen und langen Dateinamen (LFN) als Metadaten verwaltet wurde. Wenn Sie Ihre Windows 95-Betriebssystemdateien gelöscht haben, verbleiben bei der nächsten Windows 95-Installation Dateien mit ungewöhnlichen Namen auf der Festplatte. Beispielsweise könnte "Eigene Dateien" auf der Festplatte den Namen MYDOCU ~ 1 haben. Wenn Sie die Metadaten verloren haben, können Sie diese natürlich nicht einfach konvertieren.
Die Shell hat mit vielen historischen Inkrementen zu kämpfen, die seit den MS-DOS-Tagen herumhängen.
Hoffe das hilft
quelle