Nach langer Recherche fand ich schließlich heraus, dass Pfadnamen auch in der neuesten Version von Microsoft Windows 7 nicht länger als 256 Zeichen sein dürfen. Ich verstehe nicht, warum es so eine blöde Einschränkung gibt, da NTFS bis zu ~ 32.000 Zeichen Pfad verarbeiten kann Länge ohne Probleme seit mehr als einem Dutzend Jahren! Gibt es keine Möglichkeit, das zu ändern? Oder gibt es praktische Lösungen, um dies zu vermeiden?
260 Zeichen sind nur sehr wenige Zeichen, selbst für einfache Anwendungsfälle wie einige verschachtelte Fotoverzeichnisse mit langen Dateinamen.
Antworten:
Laut Microsoft:
Die traditionelle Windows-API beschränkt Pfadnamen auf 260 Zeichen, auch für Anwendungen, die für die neueste Version entwickelt wurden.
Anwendungen, die die Unicode-fähige API verwenden, können eine Pfadform verwenden, die bis zu 32767 Zeichen zulässt. Der Dateiname muss mit einem Präfix versehen sein
\\?\
und ein absoluter Pfad sein, z . B.\\?\c:\dir\file
oder\\?\UNC\server\share\file
. Weitere Einschränkungen finden Sie in der Referenz.Wenn Sie es geschafft haben, eine tiefe Dateihierarchie zu erstellen und zu verwenden und mit einer Anwendung arbeiten müssen, die aufgrund der Länge des Dateinamens bombardiert wird, können Sie Folgendes versuchen:
Verwenden Sie den
mklink
Befehl, um symbolische Links zu erstellen , und übergeben Sie einen Pfad, der sie verwendet, an Ihre Anwendung.Verwenden Sie den
subst
Befehl, um einem Verzeichnis einen Laufwerksbuchstaben zuzuweisen.Starten Sie Ihre Anwendung aus einem tiefen Verzeichnis und übergeben Sie kurze relative Pfade.
Ersetzen Sie einige lange Namen durch ihre 8.3 - Aliase (
micros~1
), unter der Annahme , diejenigen existieren noch in Windows 7. Wenn Siemicros~1
nebenmicros~2
, ich weiß nicht , wie zu sagen , welche welche ist; Führen Sie möglicherweise DOS auscommand.com
(unter der Annahme, dass Windows 7 dies noch kann).quelle
micros~1
, wird grundsätzlich zufällig ausgewählt.Sie können die Kurznamen (8.3) für alle Ihre Ordner und Dateien verwenden.
Sie müssen jedoch sicherstellen, dass sie aktiviert sind.
(mein kühnes)
Sie müssen auch Code schreiben, um den Kurznamen aus dem Langnamen zu erhalten.
Quelle
quelle
Der Datei- / Verzeichnisname in NTFS ist auf 255 Unicode-Codepunkte begrenzt, da die Länge als Byte gespeichert wird. Es gibt jedoch keine inhärente Begrenzung der Gesamtpfadlänge.
Viele Win32-API-Aufrufe (einschließlich Explorer-Shell-Aufrufe) haben das Längenlimit 260-1. Einige andere Aufrufe können das Präfix \\? \ Verwenden, um bis zu 32 KB zu erreichen (etwas weniger, da der Datenträgername im Kernelland ersetzt wird).
quelle