Überwindung der Beschränkung der maximalen Dateipfadlänge in Windows

Einer unserer Kunden verwendet üblicherweise sehr lange Pfadnamen (mehrere verschachtelte Ordner mit langen Namen), und wir stoßen regelmäßig auf Probleme bei der Benutzerschulung, um den Pfad auf weniger als 260 Zeichen zu verkürzen.

Gibt es eine technische Lösung, können wir eine Art Schalter in Windows 7 und Windows 2008 R2 umlegen, um zu sagen: "Ja, ignorieren Sie einfach diese historischen Probleme und lassen Sie +260 Zeichen im Pfadnamen zu".

P.S. Ich habe Naming Files, Paths, and Namespaces gelesen und war davon völlig unbeeindruckt.

Ich erwähne nur einen Trick, der hier noch nicht erwähnt wurde.

Nehmen Sie zum Beispiel diese Datei:

C:\Ordner1\Wirklich langer Pfad\So eine Rekursion\So tiefgründig\Wow\Ich werde bald keine Ideen mehr haben\Ich habe organisatorische Probleme\Obsessive zwanghafte Unterverzeichnisstörung\Hier ist ein Leitfaden ohne guten Grund\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Fast fertig\Steuererklärungen\2013\2013_steuererklärung.pdf`

Dieser vollständige Dateipfad ist 290 Zeichen lang. Die Shell (Windows Explorer) und die meisten Befehlszeilendienstprogramme lassen Sie wahrscheinlich nicht an ihn heran.

Verwenden Sie den Befehl subst wie folgt:

subst X: "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"

Nun können Sie auf die Datei wie folgt zugreifen (und sie löschen, verschieben usw.):

X:\Still Going\Ich habe bald keine Ideen mehr\Ich habe organisatorische Probleme\Obsessive zwanghafte Unterverzeichnisstörung\Hier ist ein Leitfaden ohne guten Grund\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Fast fertig\Steuererklärungen\2013\2013_Steuererklärung.pdf

Der Dateiname ist jetzt nur noch ~235 Zeichen lang, so dass die Probleme mit dem "Dateiname ist zu lang" nicht mehr auftreten werden.

In der Windows-API gibt es eine berüchtigte Konstante, die als MAX_PATH bekannt ist. MAX_PATH ist 260 Zeichen lang. Das NTFS-Dateisystem unterstützt Dateipfade mit bis zu 32.767 Zeichen. Und Sie können immer noch 32.767 Zeichen lange Pfadnamen verwenden, indem Sie auf die Unicode (oder "wide")-Versionen der Windows-API-Funktionen zugreifen und außerdem dem Pfad das Präfix \\?\ voranstellen.

MAX_PATH wurde vor sehr langer Zeit in der Windows-Welt in Stein gemeißelt. Ich glaube, es hat etwas mit den ANSI-Standards zu tun... aber es ist eines der Dinge, die Microsoft nur sehr schwer ändern kann, da es inzwischen Tausende von Programmen und Anwendungen gibt, darunter auch einige, die von Microsoft selbst geschrieben wurden, die MAX_PATH verwenden und auf seltsame neue Weise versagen würden, wenn die Konstante plötzlich geändert würde. (Pufferüberläufe, Heap-Beschädigung, usw.)

Kommentare (1)
Lösung

Die Methoden sind da, aber bis Microsoft das Dateibrowser-Widget neu kodiert, sind wir so ziemlich mit dem alten Problem beschäftigt. Es ist suboptimal, aber so funktioniert es nun einmal.

Kommentare (2)

Sie können diese Beschränkung umgehen, indem Sie die \\?\C: Notation verwenden. Sie ist hässlich, aber sie unterstützt Dateilängen bis zu 2^15.

http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath

Kommentare (7)