Suche Script zum Löschen aus Unterordnern

DaRealMC

Erfahrenes Mitglied
Moin zusammen,

ich suche ein Script (Batch oder PHP), ein Ansi-C-Source oder ein Programm, mit dem man folgendes lösen kann:
In einem (Windows-)Verzeichnis sind X Ordner mit unterschiedlichen Namen (MD5-Hashes). In einem Teil davon ist ein Ordner 'blub' und dieser Ordner blub enthält weitere Ordner und Dateien mit unterschiedlichen Namen.
Und genau diese Dateien und Ordner muss ich jetzt löschen, aber blub darf dabei nciht gelöscht werden (neu anlegen reicht nciht aus!). Dabei kann es passieren, dass einzelne Dateien gesperrt sind, hier darf das Script nicht abbrechen oder hängen bleiben.
Insgesamt sind das wahrscheinlich einige 100.000 Dateien.
Hat da jemand etwas zur Hand?
 
Du könntest einmal cygwin installieren und dort Bash nutzen.
Folgender Befehl sollte alles im Ordner blub löschen:

Code:
rm /path/to/folder/*/blub/*

dabei werden die wildcards zu den jeweiligen Ordnern bzw. Dateien aufgelöst. Sollte der Ordner blub auch Ordner enthalten kannst du die entfernen indem du den Parameter -r hinzufügst. Natürlich kannst du dich auch in den Ordner begeben in dem sich die Ordner mit blub befinden und relative Pfade nutzen:

Code:
cd /path/to/folder
rm ./*/blub/*

Dabei können wie oben zwischen /blub und folder/ beliebig viele wildcards stehen (folder/*/*/blub etc.)
 
An sich eine super Idee, Danke
Aber ich kann nicht 'einfach mal so' auf einen Win2k3-Server cygwin installieren
 
Hi.

Das ganze läßt sich auch mit einem Batch Skript machen:
Code:
for /r c:\dein\pfad %%i in (blub) (
  if exist %%i (
    del /S /Q /F %%i\*.*
  )
)
Gruß
 
An sich eine super Idee, Danke
Aber ich kann nicht 'einfach mal so' auf einen Win2k3-Server cygwin installieren

Hi,

soweit ich weiß, musst du da nichts "installieren", die cygwin1.dll und die rm.exe müssten theoretisch reichen, könntest auch portable auf nen USB-Stick klatschen, ohne Rückstände und so ;)

Zu der Powershell kann ich nichts sagen, die hab ich noch nicht verwendet.

Alternativ zu der Variante mit cygwin könntest du dir auch ein kleines Programm schreiben, die Sprache wäre da ja egal.

Gruß
BK
 
Hi.
soweit ich weiß, musst du da nichts "installieren", die cygwin1.dll und die rm.exe müssten theoretisch reichen, könntest auch portable auf nen USB-Stick klatschen, ohne Rückstände und so ;)
Die Wildcards werden allerdings von der Shell interpretiert, also brauchst du die auch noch.

\edit: außerdem wird es wenn es sehr viele Verzeichnissen sind nicht funktionieren, da die Anzahl der Zeichen einer Kommandozeile stark begrenzt ist. Da sollte man dann mit find arbeiten. find und Co. gibt's übrigens auch für win32 ohne Cygwin: http://gnuwin32.sourceforge.net/packages.html

Gruß
 
Zuletzt bearbeitet:
Ich mach das jetzt mit der Powershell
rm *\blub\* -force
Der geht zwar dann nur eine Ebene nach unten, aber ich glaube, das reicht.

Danke
 
Zurück