483 Stimmen

Warum gibt es unter Windows die Beschränkung der Pfadlänge auf 260 Zeichen?

Mit diesem Problem bin ich schon ein paar Mal in unpassenden Momenten konfrontiert worden:

  • Versuche, an Open-Source-Java-Projekten mit tiefen Pfaden zu arbeiten
  • Tiefe Fitnesse-Wiki-Bäume in der Versionskontrolle speichern
  • Fehler beim Versuch, meinen Versionskontrollbaum mit Bazaar zu importieren

Warum gibt es diese Grenze?

Warum ist sie noch nicht entfernt worden?

Wie gehen Sie mit der Wegbegrenzung um? Und nein, ein Wechsel zu Linux oder Mac OS X ist keine gültige Antwort auf diese Frage ;)

9 Stimmen

@Artelius: Tatsächlich unterstützt Windows (zumindest ab Win2K) Kreuzungspunkte ( de.wikipedia.org/wiki/NTFS_Junction_point ), und ab Vista werden symbolische NT-Verknüpfungen ( de.wikipedia.org/wiki/NTFS_symbolischer_link ). Wie auch immer, während Symlinks helfen können, längere/verschachtelte Pfade freundlicher zu gestalten, kann ich mir nicht vorstellen, wie Symlinks helfen würden, wenn man an die Grenzen der Pfadlänge stößt.

1 Stimmen

Auf meinem Windows 8 PC scheint die Grenze bei etwa 1024 Zeichen zu liegen, also YMMV.

10 Stimmen

Selbst wenn es diese Grenze nicht gäbe, gibt es immer noch viele andere Grenzen, und jede von ihnen könnte irgendwann lästig werden. Der Punkt ist, warum ist diese Grenze so niedrig? Nach der Ära von 8.3 und mit Mega-/Giga-Hardware sollte ein Pfad nun ein dynamisch zugewiesener String mit einer praktisch unbegrenzten Größe sein.

20voto

JDiMatteo Punkte 10224

Eine Möglichkeit, mit der Pfadbegrenzung umzugehen, besteht darin, Pfadeinträge mit symbolischen Links zu verkürzen.

Zum Beispiel:

  1. Erstellen einer C:\p Verzeichnis, um kurze Links zu langen Pfaden zu erhalten
  2. mklink /J C:\p\foo C:\Some\Crazy\Long\Path\foo
  3. hinzufügen. C:\p\foo zu Ihrem Pfad anstelle des langen Pfades

4 Stimmen

Das Verzeichnis musste nicht erst erstellt werden, so dass Schritt 1 nicht erforderlich ist.

4 Stimmen

Dieser Trick funktioniert nicht immer, da viele Anwendungen versuchen, die Links aufzulösen

4 Stimmen

En /j erzeugt einen Einhängepunkt für ein lokales Volume-Gerät oder einen Pfad auf einem lokalen Volume (wie ein Unix bind mount). Sie erstellt keinen symbolischen Link. Dies ist ein wichtiger Unterschied, da Verbindungs-Einhängepunkte immer auf einem Server ausgewertet werden und auf lokale Geräte abzielen müssen, während symbolische Links auf dem Client ausgewertet werden und auf entfernte Pfade abzielen können (wenn die Richtlinie dies erlaubt). Wie ein subst.exe-Laufwerk (d.h. DefineDosDeviceW ), ist ein Kreuzungsziel normalerweise auf etwa 4K Zeichen begrenzt. Eigentlich sind es 8K Zeichen, die etwa gleichmäßig auf den Ersatzpfad und den Anzeigepfad verteilt sind.

17voto

MovGP0 Punkte 6480

Sie können lange Pfadnamen mit PowerShell aktivieren:

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name LongPathsEnabled -Type DWord -Value 1 

Eine andere Variante ist die Verwendung eines Gruppenrichtlinie en Computer Configuration / Administrative Templates / System / Filesystem :

Group Policy Editor

7 Stimmen

Jede Anwendung muss nach wie vor erklären, dass sie Long-Path-Aware ist. Microsoft hat dies schlecht kommuniziert, indem es den Anschein erweckt hat, als sei das Anwendungsmanifest nur eine eine andere Diese Funktion lässt sich auf diese Weise aktivieren, anstatt klar zu erklären, dass es sich um einen Vertrag zwischen dem Betriebssystem (Richtlinie auf Systemebene) und der Anwendung handelt, dem beide zustimmen müssen.

1 Stimmen

Auch Visual Studio 2019 Community unterstützt leider keine langen Pfade

1 Stimmen

Auch der Windows Explorer unterstützt keine langen Pfadnamen. Er täuscht es vor, indem er kurze Namen verwendet, wenn der Pfad 260 überschreitet, aber sobald Sie die 260er-Grenze erreicht haben, können Sie mit der Windows-Explorer-App keine Ordner oder Dateien darunter sehen. Man kann auf sie von anderen Anwendungen aus zugreifen, die für die Unterstützung von 32767-Pfaden geschrieben wurden, und auch über die Befehlszeile, aber nicht über die Benutzeroberfläche der Windows-Explorer-Anwendung. Ich bin überrascht, dass dies im Jahr 2022 immer noch ein Problem ist, aber ich habe gehört, dass Microsoft daran arbeitet, einen Patch für Windows 10 und die neuen Server zu veröffentlichen, um dieses Problem zu beheben.

12voto

Priidu Neemre Punkte 2646

Wie man mit der Pfadgrößenbeschränkung unter Windows umgehen kann - mit 7zip zum Packen (und Entpacken) Ihrer pfadlängensensiblen Dateien scheint eine praktikable Lösung zu sein. Ich habe es verwendet, um mehrere IDE-Installationen (diese Eclipse-Plugin-Pfade, igitt!) und Stapel von automatisch generierter Dokumentation zu transportieren und hatte bisher kein einziges Problem.

Ich bin mir nicht ganz sicher, wie ich die von Windows festgelegte Grenze von 260 Zeichen umgehen kann (aus technischer Sicht), aber es funktioniert!

Weitere Details auf der SourceForge-Seite aquí :

"NTFS kann tatsächlich Pfadnamen mit bis zu 32.000 Zeichen unterstützen. Länge unterstützen."

7-zip unterstützt auch solche langen Namen.

Aber sie ist im SFX-Code deaktiviert. Einige Benutzer mögen keine langen Pfade, da sie nicht verstehen, wie man mit ihnen arbeitet. Deshalb habe ich im SFX-Code deaktiviert.

y Versionshinweise :

9.32 alpha 2013-12-01

  • Verbesserte Unterstützung für Dateipfadnamen mit mehr als 260 Zeichen.

4.44 beta 2007-01-20

  • 7-Zip unterstützt jetzt Dateipfadnamen mit mehr als 260 Zeichen.

WICHTIGER HINWEIS: Damit dies richtig funktioniert, müssen Sie den Zielpfad in der Datei 7zip "Extrahieren"-Dialog direkt aufrufen, anstatt die Dateien per Drag & Drop in den gewünschten Ordner zu ziehen. Andernfalls wird der "Temp"-Ordner als Zwischenspeicher verwendet, und Sie stoßen auf dieselbe 260-Zeichen-Beschränkung, sobald der Windows Explorer beginnt, die Dateien an ihren "endgültigen Ruheplatz" zu verschieben. Siehe die Antworten auf diese Frage für weitere Informationen.

3 Stimmen

Ich habe mich geirrt, 7zip und WinRAR extrahieren alle Ordner und Dateien. Es ist nur so, dass die Eigenschaft eines Ordners in Windows nur die Anzahl der Ordner und Dateien anzeigt, die die Beschränkung nicht verletzen. Es ist, als ob der Windows Explorer nicht tiefer gräbt, um Ordner zu finden, wenn der maximale Pfad erreicht ist.

0 Stimmen

Es ist möglich löschen einen langen Pfad in 7-zip mit shift-del.

0 Stimmen

Kurze Antwort: Verwenden Sie 7zip, um eine .zip-Datei zu entpacken.... hat bei mir unter Windows 7 funktioniert

11voto

Conrad Punkte 2099

In Bezug auf warum das gibt es immer noch - MS betrachtet es nicht als Priorität und stellt die Abwärtskompatibilität über die Weiterentwicklung des Betriebssystems (zumindest in diesem Fall).

Ein Workaround, den ich verwende, ist die Verwendung der "Kurznamen" für die Verzeichnisse im Pfad anstelle ihrer standardmäßigen, für Menschen lesbaren Versionen. Also z.B.. para C:\Program Files\ Ich würde verwenden C:\PROGRA~1\ Die Entsprechungen der Kurznamen finden Sie unter dir /x .

2 Stimmen

Kurze Pfadnamen können in der Registrierung (oder war es das Dateisystem selbst?) deaktiviert werden, so dass dies wirklich keine verlässliche Lösung ist.

7 Stimmen

@rubenvb Ich bin sicher, dass die meisten, wenn nicht sogar alle Windows-Funktionen in der Registrierung deaktiviert werden können, so ¯ \_ ()_/¯

1 Stimmen

Das Erzeugen von Kurznamen kann für NTFS deaktiviert werden (und sollte es auch, da es in vielen Fällen ineffizient ist), entweder für das gesamte System oder pro Volume, so dass es selbst für Pfade auf dem Systemlaufwerk, das NTFS sein muss, ein unzuverlässiger Ansatz ist. Es ist möglich, kurze Namen für Dateien und Verzeichnisse in NTFS manuell festzulegen, aber dies gilt nicht für neuere Dateisysteme, die kurze Namen überhaupt nicht unterstützen, wie exFAT und ReFS. Kurznamen sollten als veraltete Funktion betrachtet werden, die aus Kompatibilitätsgründen in begrenzten Fällen beibehalten wird, wie die alte ANSI/OEM-API, die Einzel- und Doppelbyte-Codepages verwendet.

8voto

Sergey Dryganets Punkte 797

Das ist der Fall, und es ist aus irgendeinem Grund ein Standardwert, aber Sie können ihn mit diesem Registrierungsschlüssel leicht überschreiben:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"LongPathsEnabled"=dword:00000001

Siehe: https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-Windows-10/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X