Batch + [CMD] Order löschen

Peter

Lt. Commander
Registriert
Mai 2001
Beiträge
1.957
Hallo zusammen,

ich versuche über Kommandozeile einen ganzen Ordnerbaum zu durchsuchen (> 10Mill Dateien, >100k Ordner).
In diesem riesigen Baum befinden sich Ordner mit dem Namen "xyz", welche ich mit allen Unterordnern löschen will.

Irgendwie bekomme ich das aber nicht hin.

- Der Befehl erase /F /Q /S xyz wie auch erase /F /Q /S "xyz" durchsucht den ganzen Baum, findet/löscht aber keinen einzigen Ordner.
- Der Befehl dir /B /S xyz listet mir mehrere tausend Verzeichnispafde, die einen Ordner xyz enthalten auf.

Dann hab ich mal versucht beide Befehle mit einer Pipe zu verbinden, also:
dir /B /S xyz | erase /F /Q /S

Aber dabei bekomm ich nur lapidar einen 'Syntaxfehler gemeldet'.

Wie verwende ich die Befehle richtig?


Danke & Gruss,
Peter
 
Hab grad keine Lust zu basteln, aber mal ein paar Hinweise für den Weg dort hin:

dir /S -> Verzeichnisse rekursiv auflisten
findstr /L "gesuchter name" nach einem Namen suchen -> verbinden über eine Pipe innerhalb der Schleife
findstr setzt das errorlevel, je nachdem ob was gefunden wurde mit dem Namen oder nicht (ich glaub 1 wenn nicht, 0 wenn gefunden).
Mit if errorlevel x kannst du dies gegenprüfen. Aufpassen: if errorlevel 2 fragt ab, ob das errorlevel >= 2 ist. if errorlevel 0 demzufolge >= 0. Du musst vorher also >= 1 abfangen und dann >= 0 gegenprüfen.
rmdir löscht dir ganze Verzeichnisse, /S /Q rekursiv.
 
Ich bezweifle, dass das überhaupt so ohne weiteres funktioniert. Ein Filesystem per Skript zu durchsuchen und Ordner zu löschen auf dem mehr als 10 Millionen Dateien liegen halte ich für schwierig, vorallem, wenn du auch noch rekursiv suchst.
Ich denke deswegen löscht er auch nichts, die Parameter die du oben angegeben hast müssten eigentlich passen.

Geh mal auf deinen Start-Button und gebe bei "Programm/Dateien durchsuchen" das Wort "powershell" ein und öffne die Powershell-Konsole. Dann gib mal folgenden Befehl ein:
Code:
$ordnerListe = Get-ChildItem "DeinPfad" -Recurse
"DeinPfad" ist der oberste Ordner in dem deine ganzen Unterordner und die darin enthaltenden Dateien stehen.
Danach gibst du folgendes ein:
Code:
Write-Host $ordnerListe
Hier müsste er dir die Dateiliste zurückgeben die er gefunden hat. Meine Vermutung ist, dass das garnicht klappen wird, weil es viel zu viele Dateien sind.
 
Zuletzt bearbeitet:
Zurück
Oben