lange Ordner und Dateinamen MAX_PATH
Aufgrund von Windows API Limits, können in Windows keine Ordner mit mehr als 260 Zeichen (=MAX_PATH) erzeugt werden, obwohl NTFS 32,767 Zeichen kann.
Außerdem darf die Ordnertiefe nicht mehr als 128 Ordner sein.
Windows hindert uns so lange Dateien anzulegen:
Bei meinem Test konnte ich einfach keinen längeren Dateinamen eingeben.
Will ich einen langen Ordner, in den ohnehin bereits langen Ordner, verschieben, kommt folgender Fehler:
Zielpfad ist zu lang
Die Dateinamen wären zu lang für den Zielordner. Kürzen Sie die Dateinamen und wiederholen Sie den Vorgang, oder verwenden Sie einen anderen Ort, der einen kürzeren Pfad hat.
Sehr interessant wird es aber, wenn ich den langen Ordner freigebe, denn dann zählt die Länge der Freigabe:
Unser Ordner: "C:\temp\ein langer Ordnername um das Problem mit den Dateinamen bzw. Ordnern und deren Länge nachzustellen\ein langer Ordnername um das Problem mit den Dateinamen bzw. Ordnern und deren Länge nachzustellen"
wenn ich einen Ordner innerhalb des Pfades freigebe, also den Ordner:
"C:\temp\ein langer Ordnername um das Problem mit den Dateinamen bzw. Ordnern und deren Länge nachzustellen"
als Freigabename: "lange"
Dann kann ich den Ordner über einen share aufrufen: \\localhost\lange
und dort dann einen längeren Dateinamen anlegen:
und sogar nochmal den langen Ordnernamen rein kopieren
unser echter Pfad heißt jetzt:
"C:\temp\ein langer Ordnername um das Problem mit den Dateinamen bzw. Ordnern und deren Länge nachzustellen\ein langer Ordnername um das Problem mit den Dateinamen bzw. Ordnern und deren Länge nachzustellen\ein langer Ordnername um das Problem mit den Dateinamen bzw. Ordnern und deren Länge nachzustellen - Kopie"
also wesentlich mehr als die 260 Zeichen
Windows 7 kennt das Problem und macht beim Aufruf daraus automatisch folgendes: C:\temp\EINLAN~1.ORD\EINLAN~1.ORD\ein langer Ordnername um das Problem mit den Dateinamen bzw. Ordnern und deren Länge nachzustellen - Kopie
es verwendet also die 8.3 Dateinamen um damit umgehen zu können
um diese Limitation zu umgehen gibt es außerdem folgende Möglichkeiten:
\\?\ Prefix
Aufruf über: "\\?\" prefix
Wenn du den Pfad am Server mit: \\?\d:\langername anstelle von d:\langername aufrufst. bzw. den Fileshare mit \\?\UNC\server\share anstelle von \\server\share kann der Pfad im Explorer aufgerufen werden
Quelle: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx
8.3 Namen verwenden
diese können z.B. mit dir /x angezeigt werden
einen Share bzw ein Laufwerk innerhalb der Ordnerstruktur
wie in unserem obigen Beispiel, den langen Ordnernamen mit einem kürzeren Namen freigeben
also c:\langerordner\2terlangerordner\3terlangerordner
z.B. den Ordner: 3terlangerordner freigeben (ev. mit einem kürzeren Namen) und diesen dann mit:
\\Servername\kurzername3 ansprechen
Quelle: http://support.microsoft.com/kb/320081/en-us
Windows 10 - Einstellung
Seit Windows 10 kann das Limit per Einstellung in der Registry oder GPO aufgehoben werden, allerdings nicht für den Windows Explorer:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem REG_DWORD LongPathsEnabled 1
{{percentage}} % positiv