Windows Dateien mit zu langen Dateinamen Pfadnamen kopieren Dateiname zu lang Quelle oder Ziel
Aus znilwiki
Wenn Ihr eine Fehlermeldung wie
Quellpfad ist zu lang Zielpfad ist zu lang Die Dateinamen wären zu lang für den Zielordner ...
habt bieten sich folgende Lösungen an:
Variante 1: Netzlaufwerk mounten
Ihr sucht euch den Ordner der so nahe wie möglich an den Problematischen Dateien ist.
Beispiel:
Auf dem Server FILESERVER' gibt es eine Freigabe SHARE in der die Problematischen Dateien unter
\\FILESERVER\SHARE\Mitarbeiter\Mustermann\Archiv\Meine eigenen Dokumente\In Microsoft Word erstellt\Anschreiben an Kunden mit Grafik\Firmen im Ausland\Muster\
Der Pfad hat 158 Zeichen inklusive dem abschließenden Ordner ..\Muster\
Selbst wenn die Freigabe als Netzlaufwerk gemountet ist fällt ja nur der Anfang mit \\FILESERVER\SHARE weg was gerade mal 18 Zeichen spart.
Deshalb verbindet euch den langen Pfad als Netzlaufwerk! Entweder in der Eingabeaufforderung (CMD.exe) per
net use Y: "\\FILESERVER\SHARE\Mitarbeiter\Mustermann\Archiv\Meine eigenen Dokumente\In Microsoft Word erstellt\Anschreiben an Kunden mit Grafik\Firmen im Ausland\Muster\"
oder im Datei-Explorer über "Netzlaufwerk verbinden":
Aus den 158 Zeichen sind so nun 3 geworden, in diesem Fall nämlich
Y:\
Eventuell müsst Ihr das mit Quelle und Ziel machen. Nun könnt Ihr neu versuchen zu kopieren.
Die Netzlaufwerke könnt Ihr im Anschluss per Rechtsklick -> Trennen wieder entfernen.
Variante 2: lokale Laufwerke
Falls die problematischen Dateien lokal liegen und Ihr nicht extra eine Freigabe für den vorherigen Trick erstellen wollt so nehmt den Befehl Subst
.
Beispiel:
Auf Rechner liegen die Daten lokal unter
D:\Mitarbeiter\Mustermann\Archiv\Meine eigenen Dokumente\In Microsoft Word erstellt\Anschreiben an Kunden mit Grafik\Firmen im Ausland\Muster\
was 142 Zeichen entspricht. Mit
subst Y: "D:\Mitarbeiter\Mustermann\Archiv\Meine eigenen Dokumente\In Microsoft Word erstellt\Anschreiben an Kunden mit Grafik\Firmen im Ausland\Muster\"
habt Ihr den Ordner nun direkt unter Y:, verkürzt auf 3 Zeichen.
Hinterher werden Ihr Y: mit
subst Y: /D
wieder los.
Variante 3: Robocopy
Das gute Robocopy nutzt - in den neueren Versionen - die Windows-Unicode Methoden und kann auf diese Weise mit Pfaden umgehen die bis zu 32.000 Zeichen haben.
Mit
robocopy \\Server\Freigabe\Quellordner\ \\Server\Freigabe\Zielordner /E /COPYALL
könnt Ihr also die Dateien an den neuen Ort kopieren.
/E
steht dabei für "mit allen (auch leeren) Unterordnern",
/COPYALL
für "inklusive Berechtigungen und Attributen"'
Hierbei werden am Ziel schon vorhandene Dateien und Ordner NICHT kopiert!
Die schärfere Variante wäre
robocopy \\Server\Freigabe\Quellordner\ \\Server\Freigabe\Zielordner /MIR /COPYALL
welche dafür sorgt das Quell- und Zielverzeichnis hinterher 1:1 gleich sind- ACHTUNG, am Ziel werden dabei ggf. auch Dateien oder Ordner gelöscht!
Variante 4: Vorherige Versionen / Previous Versions
Das ist ja alles schön und gut - aber was mache ich wenn die Daten aus den "vorherigen Versionen" Stammen? net use
funktioniert da nicht und robocopy auch nicht!
Öffnet die entsprechende vorherige Version:
Und lasst euch dann die Eigenschaften des Ordners anzeigen. Aus diesen kopiert ihr euch den Pfad:
Beispielsweise ist der kopierte Pfad also
\\FILESERVER\SHARE\@GMT-2015.09.04-05.00.18\Mitarbeiter\Mustermann\Archiv\Meine eigenen Dokumente\In Microsoft Word erstellt\Anschreiben an Kunden mit Grafik\Firmen im Ausland\Muster\
net use
funktioniert nicht - aber erstaunlicherweise subst
:
subst Y: "\\FILESERVER\SHARE\@GMT-2015.09.04-05.00.18\Mitarbeiter\Mustermann\Archiv\Meine eigenen Dokumente\In Microsoft Word erstellt\Anschreiben an Kunden mit Grafik\Firmen im Ausland\Muster\"
und schon haben wir den Snapshot / die vorherige Version als Laufwerk Y:
Sieht zwar komisch aus - funktioniert aber!
y: werdet Ihr dann mit
subst Y: /D
wieder los.
Variante 4: Mischung aus allem
In der Praxis habe ich es oft das ich
- das Ziel verkürze per
net use
- die Quelle eine vorherige Version ist die mir per
subst
mounte - und ich das ganze per
robocopy Quelle Ziel /E /COPYALL
kopiere