blog.atwork.at

news and infos about microsoft, technology, cloud and more

Wie löscht man sehr tiefe Verzeichnisse?

Ich mag robocopy. Ich mag robocopy wirklich (siehe u.a. windowsblog.at Robocopy - Mein Lieblingstool für Kopieren und Backup). Es hat nur einen Nachteil: Es tut, was man ihm sagt…!

Wie so oft saß das Problem vor dem Computer: Vor Weihnachten sitze ich vor meinem Notebook und will noch “rasch” ein paar Daten von meinem SBS2008 aufs Notebook mitnehmen. Also robocopy anwerfen: Die Daten sind in meinem Laufwerk H: und ich kopiere sie in mein lokales Verzeichnis C:\Daten\H:

!! NICHT NACHMACHEN !! ;-)

robocopy H:\ H:\Daten\H /s /MIR (… und sonst noch die üblichen Schalter wie /R:3 /W:3 etc…)

ENTER. Der Befehl arbeitet einige Zeit und erzeugt viel Copy-Output.
Moment mal, da stimmt doch was nicht!

Ich $&}$%! Die Finger waren schneller als das Hirn, das angegebene Ziel war ja die Quelle H:\Daten… statt C:\Daten\H !!! Abbrechen und nachsehen, was da passiert ist:

dirs-endlos

Super, robocopy hat wirklich getan, was ich beauftragt habe: Das Verzeichnis H:\ rekursiv in sich selbst kopiert!

Na gut, halb so schlimm. Dann wechsle ich mal auf den Server und lösche eben mal die Daten und Verzeichnisse, oder?

Also, Das Verzeichnis am Server lautet D:\Daten\H. Und hier drin die ewige Verzeichnisstruktur. Damit ich versehentlich nichts kaputt mache – da sind ja noch mehr Daten drauf! - benenne ich das zu löschende Verzeichnis um: Aus D:\Daten\H\Daten wird gleich mal D:\Daten\H\x und da drin das erste Verzeichnis x1 – so fühle ich mich irgendwie “sicherer”.

Kommandozeile öffnen und versuchen in D:\Daten\H\x\x1 die Daten und die Verzeichnisse zu löschen:

del daten /S /F /Q

dirs-delete

Hm. Klappt nicht. Genauso wenig klappt das Löschen der Verzeichnisse mit rd:

dirs-rd

Blöd. Na gut, dann versuchen wir es mal mit PowerShell:

dirs-delete-ps

Genau dasselbe Ergebnis… next attempt: vielleicht geht es mit Rekursion?

dirs-delete-ps-recursive

Wieder nichts! Langsam steigt ein ungutes Gefühl in mir auf…

Zwei Tage später: Jetzt zu den Feiertagen kann ich mich ja wieder darum kümmern und versuchen, den “Datenmüll” wieder zu entfernen. Wie bekomme ich diesen tiefen Verzeichnispfad wieder weg?

Wahrscheinlich habe ich nicht die richtigen Suchbegriffe in die Suchmaschinen eingetippt, denn ich habe nichts (rasch) brauchbares gefunden…

Ich überlege, mir ein winziges Programm zu schreiben, das rekursiv in das letzte Verzeichnis wechselt und dort alles löscht, dann eine Ebene höher geht usw. Aber das wird wohl auch nicht funktionieren, denn beim Löschen beschwert sich das Dateisystem ja immer, dass die Verzeichnistiefe zu groß ist. Dann wird Löschen auch nicht gehen.

Oder Umbenennen aller Verzeichnisse in den kürzest möglichen Pfad, z.B. “1” – aber automatisiert, denn sonst sitze ich morgen noch da: D:\Daten\H\x\x1\1\1\1\1\1\1\1\1\1\1\1\1 …

Oder… moment mal: Wenn robocopy den coolen Schalter /MIR kann (löscht am Ziel-Verzeichnis alles und “snychronisiert” das Quell-Verzeichnis vollständig in das Zielverzeichnis), dann kann es vielleicht auch die so angelegte Verzeichnistiefe wieder löschen??

Probieren wirs: Ich verwende ein Verzeichnis mit nur einer Datei drin aus D:\Temp, um ein “Dummy-Copy” ins Ziel durchzuführen:

robocopy D:\Temp D:\Daten\h\x /MIR /s /r:1 /w:1

Ok, alle Fenster schließen, damit die Verzeichnisse nicht gelockt sind und den Befehl mehrmals ausführen – es klappt!

Den kompletten Output erspare ich uns, aber es sieht etwa so aus:

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robustes Dateikopieren für Windows

-------------------------------------------------------------------------------

           Gestartet: Fri Dec 25 15:59:42 2009

             Quelle : d:\temp\
               Ziel : d:\daten\h\x\

            Dateien : *.*

            Optionen: *.* /S /COPY:DAT /PURGE /MIR /R:1 /W:1

------------------------------------------------------------------------------

                           1    d:\temp\
        *ZUS. Verz.       -1    d:\daten\h\x\x1\
        *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\
        *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\
        *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\
        *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\h\
        *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\h\daten\
        *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\h\daten\h\
        *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\h\daten\h\daten\
        *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\h\daten\h\daten\h\

        *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\h\daten\h\daten\h\

        *ZUS. Verz.       -1    d:\daten\h\x\x1\daten\h\daten\h\daten\h\daten\h\
daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\
daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\h\daten\

------------------------------------------------------------------------------

                Gesamt   Kopiert  Überspr. Nicht gef.  Fehler    Extras
Verzeich.:         1         0         1         0         0        48
   Dateien:         1         0         1         0         0         0
     Bytes:       215         0       215         0         0         0
    Zeiten:   0:00:00   0:00:00                       0:00:00   0:00:00

   Beendet: Fri Dec 25 15:59:43 2009

Wieder was gelernt!

Erstens: Kurz Hirn einschalten, bevor man so praktische Tools wie robocopy verwendet und zweitens ist oft der Auslöser die Lösung…

In meinem Fall kann robocopy auch wunderbar zum Löschen von so tiefen Verzeichnissen verwendet werden, wo das Betriebssystem “die Patschen streckt”. ;-)

In diesem Sinne: Robocopy ist super. Und erholsame Feiertage!

Comments (1) -

  • RobocopyVerzweifler

    8/7/2010 11:14:20 PM |

    Respekt, da hat einer wirklich sein Hirn eingeschaltet und mir viel Arbeit erspart. Ich habe nur ca. 1 Std. mit nutzlosem Webdurchforsten verbracht bevor ich diese tolle Anleitung gefunden hab! Vielen Dank!!

Loading