none
löschen zu langer Dateinamen

    Frage

  • Moin,

    ich muss auf einem Server2003r2 eine alte Fileablage aufräumen. Sehr oft habe ich Ordner mit Dateien die über die 255 Zeichen gehen. Dann kommt eine Fehlermeldung und der Löschvorgang bricht ab.

    Dazu diverse Fragen:

    - wie verhindere ich bei Win XP/Server2003/2008r2, bzw. zukünftig Win7/2008r2 das Dateien abgespeichert werden wenn die max. Zeichenlänge überschritten wird

    - wie kann ich bequem einen Löschvorgang ausführen ohne das ich wegen dieser problematik alle Ordner/Dateien manuell einkürzen muss

     

    Danke

    Dienstag, 28. Juni 2011 11:35

Antworten

  • Das Problem ist dass Windows NT und NTFS kein Problem mit den langen Dateinamen und Pfaden hat, Win32 aber schon. Somit kannst du mit Tools die die Win32-API benutzen nichts ausrichten. Deine einzigen Chancen sind hier (wie teilweise bereits angemerkt):

    • Netzlaufwerk verbinden um einen Teil der Pfadlänge wegzukriegen und dann am Netzlaufwerk löschen
    • Mit SUBST ein Laufwerk in den Pfad verbinden um einen Teil der Pfadlänge loszuwerden (eigentlich das gleiche wie mit dem Netzlaufwerk, aber lokal ohne dass man den Pfad vorher Freigeben muss)
    • Tools benutzen die nicht die Win32 API nutzen sondern direkt auf Ebene von Windows NT funktionieren (sogenannte "Windows Native").

    Für letztere Methode kann ich dir hier ein Beispiel geben mithilfe von robocopy.exe welches seit Vista bei Windows inkludiert ist und nicht die Win32 API nutzt:

    Im Beispiel nehme ich an du willst alles unterhalb von folgendem Pfad löschen:

    D:\MeinVielZuLangerPfad\NochVielLänger\*

    Erstelle nun zuerst einen leeren Ordner, dann benutze Robopcy um diesen mittels "MIRROR" mit dem zu leerenden Pfad abzugleichen:

    mkdir D:\TempZumLoeschen
    robocopy.exe D:\TempZumLoeschen D:\MeinVielZuLangerPfad\NochVielLänger /MIR
    rmdir D:\TempZumLoeschen
    

    Auch wenn Robocopy eigentlich ein Tool zum kopieren ist, sorgt dieser Befehl dafür dass Robocopy die 2 Ordner komplett abgleicht. Da der Quellordner aber völlig leer ist leert er auch den Zielordner entsprechend. Die langen Pfad- und Dateinamen sind dabei für Robocopy kein Problem da es eben ein natives Windows NT Programm ist und kein Win32 Programm. Es ist übrigens auch nicht möglich mit normalen Win32 Programmen so lange Pfade und Dateinamen zu erstellen. Diese können nur durch native Windows NT Calls erstellt werden, oder durch tiefgehende und/oder verschachtelte File-Shares. Meist ist letzteres das Problem und dies kann durch gut geplante File-Server Architektur verhindert werden.

    Dienstag, 28. Juni 2011 18:04

Alle Antworten

  • Hallo,

    >wie verhindere ich bei Win XP/Server2003/2008r2, bzw. zukünftig Win7/2008r2 das Dateien abgespeichert werden wenn die max. Zeichenlänge überschritten wird

    nach meinen Informationen lässt der Explorer ab Vista schon keine längeren Dateinamen bzw. Pfadlängen zu.
    Wird eine gewisse Länger erreicht, kannst du schlichtweg nicht weiter schreiben.

    >wie kann ich bequem einen Löschvorgang ausführen ohne das ich wegen dieser problematik alle Ordner/Dateien manuell einkürzen muss

    Was bisher immer funktionierte:

    z.B.:

    \\server\freigabe\laaaaaaangerpfaaad\laaaaaaaaaaaaaaagerpfaaaad\abc

    => Netzlaufwerk mappen x: = \\server\freigabe\laaaaaaangerpfaaad\

    Dann kannst du wie folgt zugreifen:

    x:\laaaaaaaaaaaaaaagerpfaaaad\abc

    Dienstag, 28. Juni 2011 12:31
  • Moin,

    bei den meisten Ordnern hat das geklappt.

    Ein ordner, bzw. sein Inhalt weigert sich hartnäckig. Gibt es noch eine andere Möglichkeit?

    Eine andere Frage, kann ich Ordner vorab prüfen ob da sowas nicht im grünen Bereich ist?

    Danke und Grüße

    Dienstag, 28. Juni 2011 13:47
  • Das Problem ist dass Windows NT und NTFS kein Problem mit den langen Dateinamen und Pfaden hat, Win32 aber schon. Somit kannst du mit Tools die die Win32-API benutzen nichts ausrichten. Deine einzigen Chancen sind hier (wie teilweise bereits angemerkt):

    • Netzlaufwerk verbinden um einen Teil der Pfadlänge wegzukriegen und dann am Netzlaufwerk löschen
    • Mit SUBST ein Laufwerk in den Pfad verbinden um einen Teil der Pfadlänge loszuwerden (eigentlich das gleiche wie mit dem Netzlaufwerk, aber lokal ohne dass man den Pfad vorher Freigeben muss)
    • Tools benutzen die nicht die Win32 API nutzen sondern direkt auf Ebene von Windows NT funktionieren (sogenannte "Windows Native").

    Für letztere Methode kann ich dir hier ein Beispiel geben mithilfe von robocopy.exe welches seit Vista bei Windows inkludiert ist und nicht die Win32 API nutzt:

    Im Beispiel nehme ich an du willst alles unterhalb von folgendem Pfad löschen:

    D:\MeinVielZuLangerPfad\NochVielLänger\*

    Erstelle nun zuerst einen leeren Ordner, dann benutze Robopcy um diesen mittels "MIRROR" mit dem zu leerenden Pfad abzugleichen:

    mkdir D:\TempZumLoeschen
    robocopy.exe D:\TempZumLoeschen D:\MeinVielZuLangerPfad\NochVielLänger /MIR
    rmdir D:\TempZumLoeschen
    

    Auch wenn Robocopy eigentlich ein Tool zum kopieren ist, sorgt dieser Befehl dafür dass Robocopy die 2 Ordner komplett abgleicht. Da der Quellordner aber völlig leer ist leert er auch den Zielordner entsprechend. Die langen Pfad- und Dateinamen sind dabei für Robocopy kein Problem da es eben ein natives Windows NT Programm ist und kein Win32 Programm. Es ist übrigens auch nicht möglich mit normalen Win32 Programmen so lange Pfade und Dateinamen zu erstellen. Diese können nur durch native Windows NT Calls erstellt werden, oder durch tiefgehende und/oder verschachtelte File-Shares. Meist ist letzteres das Problem und dies kann durch gut geplante File-Server Architektur verhindert werden.

    Dienstag, 28. Juni 2011 18:04
  • Hi SNR_1,

    Ein ordner, bzw. sein Inhalt weigert sich hartnäckig. Gibt es noch eine andere Möglichkeit?

    bei uns kommt es leider auch häufiger vor und wir kürzen einfach einige Ordner in der Struktur, sodass die Gesamtlänge wieder passt.


    Viele Grüße
    Christian

    Freitag, 1. Juli 2011 04:51
  • Danke für die Hilfe

    Manche kommen selbst mit einem einfachen dateinamen über die max. Zeichenlänge. Und da ist dann auch nichts mehr mit Ordnernamen einkürzen.

    Grüße

    Dienstag, 5. Juli 2011 10:50
  • > - wie verhindere ich bei Win XP/Server2003/2008r2, bzw. zukünftig
    > Win7/2008r2 das Dateien abgespeichert werden wenn die max. Zeichenlänge
    > überschritten wird
     
    Gar nicht - leider.
     
    > - wie kann ich bequem einen Löschvorgang ausführen ohne das ich wegen
    > dieser problematik alle Ordner/Dateien manuell einkürzen muss
     md "%temp%\Leer"
    robocopy "%temp%\Leer" C:\Pfad\mit\zu\langen\Namen /mir
     
    Robocopy greift unter Umgehung des Win32_Api (mit der Beschränkung auf
    260 Zeichen) direkt auf das Dateisystem zu.
     
    mfg Martin
     

    Kein MVP, kein MCSE. Nur ein wenig Erfahrung.
    Dienstag, 12. Juli 2011 15:46
  • Sie können dieses kostenlose Programm verwenden, Long Path Eraser Free (iperiusbackup.net)

    Dienstag, 14. Juni 2016 09:33
  • Nach wochenlangem wiederholten Suchen nach einer Lösung, bin ich endlich fündig geworden. Mit ROBOCOPY allein wie in diesem Beitrag beschrieben ist es zwar immer noch nicht möglich Ordner mit überlangen Dateinamen zu löschen. Auch mit UNLOCKER allein funktioniert es  nicht. Aber in Kombination zwischen ROBOCOPY und UNLOCKER geht das völlig problemlos. Hier das Vorgehen:

    1) Das Gratistool ROBOCOPY installieren

    2) Neuen leeren Ordner anlegen

    3) ROBOCOPY aufrufen und den Befehl "robocopy <neuer leerer Ordner> <Ordner mit zu langen Namen> /MIR" anwenden. Dabei ist "neuer leerer Ordner" der Source Path und "Ordner mit zu langen Namen" der Target Path.

    4) Den <Ordner mit den zu langen Namen> mit UNLOCKER löschen

    Nun ist der Ordner mit den zu langen Daten verschwunden!

    Glückwunsch!

    Mittwoch, 22. Juni 2016 07:23