# Problem mit zu langen Verzeichnisnamen auf Laufwerken



## da32079 (8. Jul 2015)

Hallo Community,
ich habe da ein kleines Problem. Und zwar habe ich den Auftrag bekommen ein bestimmtes Verzeichnis von einem Netzlaufwerk lokal auf meinem Rechner zu sichern.
Nur leider sind die Verzeichnisse viel zu lang und Windows hat ein Problem, diese zu speichern, da sie eine bestimmte Verzeichnisslänge überschreiten (dürfen glaube ich nur 255 Zeichen lang sein). 
Ich hatte mir ein kleines Hilfsmakro in Excel geschrieben, um mir die Verzeichnisse herauszufiltern, die länger als 255 Zeichen lang sind.
Das habe ich rekursiv gelöst, um die ganzen Unterordner zu durchwandern. Nur leider bricht der mir ab einer bestimmten Länge einfach ab und geht nicht mehr weiter in die Hierarchie hinein.
Excel hin oder her, scheint wohl ein generelles Problem von Windows zu sein.
Nun könnte ich her gehen und das ganze halt händisch kürzen (ist aber keine schöne Lösung, da das Problem ja irgendwann wieder auftreten könnte).

Ich wende mich an euch, da ich hier schon oft gute Ideen und Lösungen gefunden habe und ich hoffe, ihr könnt auch mir helfen 

PS: Mir muss jetzt keiner ein fertiges Java-Programm liefern nur wenn ihr irgendwelche Ansätze habt, die sich mit Java realisieren lassen, würde ich mich sehr freuen


----------



## Maggot (8. Jul 2015)

Kannst du mit Java alle Verzeichnisse durchgehen? Auch wenn die länger als 255 Zeichen lang sind? Dann könntest du sie ja mit Java umbenennen bzw kürzen.


----------



## da32079 (8. Jul 2015)

Also,
danke erstmal für die Antwort 
ein Kollege von mir hat das mit C# umgesetzt, da ist das gleiche Problem aufgetreten.
Wie ich es bereits gesagt hatte, glaube ich, dass es eher ein Problem von Windoofs ist.

Bräuchte also eher einen anderen Einsatz


----------



## Maggot (8. Jul 2015)

Aber probier es einmal mit Java. Versuch mit Java die Ordnernamen auszulesen und wenn sie > 255 sind, kürz sie. Alles mit Java.

Oder lasst dich Windows schon garnicht die Ordnernnamen auslesen?


----------



## Dompteur (8. Jul 2015)

Manche Firmen haben eine recht tief geschachtelte Verzeichnisstruktur auf ihren Servern. Dann stößt man schnell auf die 255 Zeichen-Beschränkung. Die Frage ist, ob die Namen (Verzeichnis + File) ab dem Startpunkt des zu kopierenden Bereichs ebenfalls zu lange sind.
Das ist ein allgemeines Windows Problem. Daher hier ein Vorschlag, wie du das mit Windows-Mitteln angehen kannst:

Du kannst ein bestimmtes Verzeichnisknoten wie ein Laufwerk ansprechen.
Wenn deine Daten also auf H:\Bereich\Abteilung\Gruppe\Projekt liegen, dann gib folgendes in der Kommandozeile ein:

```
subst x: H:\Bereich\Abteilung\Gruppe\Projekt
```
 
Wenn du nun x:... verwendest, sind deine Pfade kürzer.
Mit etwas Glück reicht dir diese Verkürzung.


----------



## da32079 (8. Jul 2015)

Vielen Dank Dompteuer für die Antwort 
Allerdings liegt das zu sichernde Verzeichnis auf der obersten Ebene. 
Also bei deinem Beispiel müsste ich bereits den Ordner Bereich sichern.

Aber schon mal danke für den Tipp, vielleicht hilft's ja an einem anderen Beispiel, wenn nur ein Knoten kopiert werden soll.


----------



## Henne079 (9. Jul 2015)

Hallo,
ich nehme mal an, dass die Pfade auf einem Linuxsystem erstellt wurden?
Denn die Pfadlänge ist bei Windows auf 256 Zeichen beschränkt. Unter Linux darf aber jeder Ordnername und jeder Dateiname 256 Zeichen lang sein.

Überspiele die Daten auf ein Linuxsystem und das Programm sollte auch funktionieren.

Ich habe außerdem dies gefunden:


			
				Wikipedia hat gesagt.:
			
		

> Längere Pfade bis zu 32767 Zeichen, wie sie von NTFS unterstützt werden, sind mittels UNC (Uniform Naming Convention) möglich, d. h. \\?\ muss vorangestellt werden.


Das habe ich allerdings nicht getestet und kann dazu nichts sagen.

Gruß Henne


----------



## nvidia (9. Jul 2015)

Henne079 hat gesagt.:


> Denn die Pfadlänge ist bei Windows auf 256 Zeichen beschränkt.



Das ist so nicht richtig. Die Pfadlänge ist kein Problem von Windows bzw. dessen Filesystems (ab NTFS) sondernder diverser APIs, wie z.B. der File-API. Wenn man low-levlig unterwegs ist gibt es die meisten aber mittlerweile in zwei Versionen die alte und eine die Unicode verträgt. Wird letztere verwendet ist es kein Problem Pfade bis zu ca. 32k Zeichen zu haben.

Darüber hinaus sind viele in Windows enthaltene Programme eben nicht auf das neue API umgeschrieben oder benutzen das neue API aber verhalten sich kompatibel zur alten Version. Der Windows Explorer wäre so ein Kandidat.

Das gilt aber auch für Anwendungssoftware bspw. WinZip vs. 7Zip. Ersteres nölt dich bei sehr tief geschachtelten Zips wie z.B. Eclipse wg. der Pfadlänge an und Letzeres schafft es ohne Probleme.

Für Java stellt sich dann eher die Frage mit welcher API interagiert die verwendete JVM? Ich habe kurz für die 64-Bit Version folgendes Code-Stück laufen lassen. Das legt problemlos auf einem Windows 7 einen Pfad der Länge 800x36 an.


```
public static void main(String... args) {
        File root = new File("D:/");
        for(int i = 0; i < 800; i++) {
            root = new File(root, UUID.randomUUID().toString());
            root.mkdir();
        }
    }
```


----------



## da32079 (10. Jul 2015)

Kannst du jetzt durchgehen und dir alle Verzeichnisse ausgeben lassen, deren Pfade länger als 255 Zeichen sind ?


----------

