Wenn Sie lange genug mit Windows arbeiten, insbesondere mit Ordnern und Dateien mit langen Namen, tritt ein bizarrer Fehler auf: Windows meldet, dass der Ordnerpfad oder Dateiname zu lang ist, um an ein neues Ziel zu verschieben oder sogar zu löschen. Was ist das Problem?
Hey How-To Geek!
Neulich habe ich einige Dateien auf meinem Computer neu organisiert und Ordner erstellt, solche Sachen. Wenn ich dann einige Dateien in einen Ordner verschiebe, wird eine Meldung angezeigt, dass der resultierende Ordnerpfad zu lang ist. Ich war verwirrt. Ich weiß, dass jedes einzelne Betriebssystem seit DOS lange Dateinamen unterstützt, aber Windows behauptet, dass der Pfad zu lang ist? Warum passiert das?
Mit freundlichen Grüßen
Herr unorganisiert
Das Problem, auf das Sie stoßen, ist eine unglückliche Überschneidung zweier Systeme, die in solchen Fällen zu einem Fehler führt. Um genau zu verstehen, woher der Fehler kommt, müssen wir uns mit der Geschichte der langen Dateinamen (LFN) und der Interaktion von Windows mit ihnen befassen, bevor wir uns mit Lösungen befassen.
Lange Dateinamen wurden über die zugrunde liegende MS-DOS-Architektur in Windows 95 eingeführt. Das neue LFN-System erlaubte Datei- und Verzeichnisnamen mit bis zu 255 Zeichen. Dies war eine willkommene Erweiterung des vorherigen Dateinamensystems, das normalerweise aufgerufen wird 8.3 Dateinamen weil der Name auf acht Zeichen und eine dreistellige Erweiterung beschränkt war, aber auch als Short Filename (SFN) bekannt ist. Wie Sie sich vorstellen können, gab es damals noch viele DOS-basierte Apps und es gab mehr als ein paar Kopfschmerzen, die versuchten, die neueren LFNs und die alten SFNs dazu zu bringen, gut miteinander zu spielen. Wenn Sie jemals auf eine ältere Diskette oder CD-ROM mit seltsam abgeschnittenen Dateien (wie abcdef ~ 1.txt) gestoßen sind, wurde dieser Dateiname von einer SFN-verwendenden Legacy-Anwendung aus einer längeren und nicht unterstützten LFN (wie abcdefghijk) entfernt. TXT).
Wir sind jedoch weit von der Mitte der neunziger Jahre entfernt, und die ganze Sache mit dem langen Dateinamen ist (größtenteils) fest ausgebügelt. Wenn Sie eine Windows-Version der letzten 10 Jahre ausführen, sind Sie wahrscheinlich noch nie auf einen Konflikt mit der Länge von Dateinamen gestoßen, wie wir ihn in den 95 Tagen von DOS / Windows kennengelernt haben. Das heißt, wir haben immer noch Probleme, wie Sie bei Ihrem Projekt zur Datenträgerbereinigung festgestellt haben. Aber wieso? Wenn das Windows-System für lange Dateinamen Ordner und Dateinamen mit bis zu 255 Zeichen pro Komponente unterstützt, auf welche Wand stoßen Sie? Wir können NTFS (das Dateisystem, das die überwiegende Mehrheit der modernen Windows-Computer verwendet) nicht beschuldigen, da NTFS eine Verkettung von Ordnern und Dateinamen bis zu einer Gesamtpfadlänge von 32.767 Zeichen unterstützt. Dies geht weit über die typische Verzeichnisstruktur hinaus, die die meisten Benutzer jemals benötigen würden.
Wo alles auseinander fällt, ist eine künstliche Einschränkung, die Windows über dem LFN / NTFS-System stapelt: die Variable MAX_PATH. Die Variable MAX_PATH gibt an, dass eine vollständige Verzeichnisstruktur in Windows insgesamt 260 Zeichen nicht überschreiten darf, einschließlich Laufwerksbuchstabe, Doppelpunkt, Backslash und Null-Backlash am Ende. Sie haben also nur einen potenziellen realen MAX_PATH von 256 Zeichen, z.
Als Sie Ihren Computer bereinigten, hatten Sie ein Verzeichnis mit einem bereits langen Pfad (entweder weil die Ordnernamen lang waren, die Dateinamen lang waren oder beides) und als Sie versuchten, einen oder mehrere zu verschieben Bei diesen Verzeichnissen in einem anderen Verzeichnis mit einem langen Pfad hat die Gesamtlänge des Pfadnamens die durch die Variable MAX_PATH festgelegte Beschränkung von 260 Zeichen überschritten.
Jetzt denken Sie vielleicht: „Ah-hah! Wir werden einfach die Variable MAX_PATH ändern und das Problem lösen! “ Leider ist es nicht so einfach. Die Variable MAX_PATH ist nicht nur im Wesentlichen fest in Windows codiert, sondern selbst wenn Sie den enormen Aufwand durchmachen würden, würden Sie am Ende so viel kaputt machen, dass es sich nicht lohnt. Zu viele Anwendungen erwarten, dass die Pfadvariable so ist, wie Windows sie lange angegeben hat. Wir können es nicht einfach ändern, ohne ein riesiges Durcheinander zu verursachen.
Wo bleibt dir das? Die einfachste Lösung besteht darin, nur die Pfaddaten zu bearbeiten. Wenn Sie beispielsweise eine Menge gespeicherter Artikel haben, bei denen die Anwendung / Erweiterung, mit der Sie sie aus dem Web gespeichert haben, ein Verzeichnis erstellt hat, das den vollständigen Titel des Artikels + den Artikel-Lead enthält, und der Dateiname selbst der vollständige Titel ist des Artikels + des Artikelleiters wäre es wirklich einfach, den MAX_PATH mit einem einzigen Speichervorgang zu erreichen oder zu übertreffen. Das Bearbeiten dieser riesigen Ordner- und Artikeltitel auf eine vernünftigere Größe ist eine einfache Möglichkeit, das Problem zu beheben.
Wenn Sie eine große Anzahl von Dateien mit einem langen Pfad haben und nicht alle bearbeiten möchten (oder wenn Sie eine Menge alter Verzeichnisse verwenden möchten, die für Windows zu lang sind, um sie zu verarbeiten, wenn sie durch die Variable MAX_PATH eingeschränkt werden), Es gibt eine Befehlszeilenumgehung. Obwohl Windows durch die Variable MAX_PATH eingeschränkt ist, erkannten die Windows-Ingenieure, dass es Situationen geben würde, in denen Benutzer mit längeren Pfadnamen umgehen müssten. Daher verfügt die Windows-API über eine Funktion für den Umgang mit extrem langen Pfaden.
Um diese API zu nutzen und Befehlszeilentools für Ihre unhandlichen Ordner / Dateinamen zu verwenden, müssen Sie lediglich den Verzeichnisnamen mit einigen zusätzlichen Zeichen anhängen. Wenn Sie beispielsweise eine große Verzeichnisstruktur hatten, die Sie löschen wollten (aber aufgrund der Pfadlänge beim Versuch einen Fehler erhalten haben), können Sie den Befehl wie folgt ändern:
rmdir c:documentssome-really-super-long-folder-name-scheme
zu:
rmdir ?c:documentssome-really-super-long-folder-name-scheme
Der Schlüssel ist die Hinzufügung der ?
Teil vor dem Start des Dateipfads; Dies weist Windows an, die durch die Variable MAX_PATH auferlegten Einschränkungen zu ignorieren und mit dem Pfad zu interagieren, den Sie soeben angegeben haben, wie er direkt vom zugrunde liegenden Dateisystem bereitgestellt / verstanden wird (was eindeutig einen längeren Pfad unterstützen kann). Seien Sie wie immer an der Eingabeaufforderung vorsichtig, um zu vermeiden, dass versehentlich Dateien oder Verzeichnisse gelöscht werden, die Sie intakt lassen möchten.
Wenn Sie unsere Übersicht über dieses Problem neugierig gemacht haben, lesen Sie auf jeden Fall diesen Artikel aus dem Microsoft Developer Network-Bibliothek, Benennen von Dateien, Pfaden und Namespaces, für weitere Informationen darüber, was unter der Haube vor sich geht.
Haben Sie eine dringende technische Frage? Schreiben Sie uns eine E-Mail an ask@howtogeek.com und wir werden unser Bestes tun, um diese zu beantworten.