Per Batch alle Dateien mit einem bestimmten String löschen

maikell84
Goto Top
Hallo!

Ich habe ein Problem. Ich habe einen Ordner mit 300.000 .MAI Dateien. Von diesen Dateien sollen ca 290.000 gelöscht werden. Und zwar alle die einen bestimmten String enthalten!

Wie bekomme ich das per Windows-cmd-Befehl hin?


Habe schon diesen Befehl probiert, aber da passiert einfach nur gar nichts...

for /f "tokens=1 delims=:" %I in ('findstr SOMEstring *MAI') do @del %I


Viele Grüße
Maikell

Content-Key: 216892

Url: https://administrator.de/contentid/216892

Ausgedruckt am: 30.06.2022 um 14:06 Uhr

Mitglied: 106543
106543 13.09.2013 um 13:49:59 Uhr
Goto Top
Hi,

muss es eine Batch sein oder kann man das auch mit VBA/VBS lösen ?

Grüße
Exze
Mitglied: Maikell84
Maikell84 13.09.2013 um 13:53:15 Uhr
Goto Top
Hi,

das ganze ist auf einem Windows 2008 Server.
Kenne mich mit VBS leider gar nicht aus, aber wenn Ihr mir sagt wie ich das antelle dann darf es gerne auch VBA/VBS sein. ^^

Grüße
Maikell
Mitglied: 106543
106543 13.09.2013 um 13:59:29 Uhr
Goto Top
Hiho,

Theoretisch müsste es in Batch doch einfacher gehen. Kann es leider grade nicht testen, aber per Wilcard "*" sollte das möglich sein.
<CODE>
del *[bestimmter String]*.*
</CODE>
müsste erfolg bringen oder ? ich weiß nicht mehr genau, wie die Wildcard in Batch war, sorry kann auch sein dass ich völlig daneben liege.

Grüße
Exze
Mitglied: Maikell84
Maikell84 13.09.2013 um 14:01:09 Uhr
Goto Top
Halt Missverständnis! ;)

Der String ist nicht im Dateinamen, sondern in der Datei!
So eine Datei hat ca 20 Zeilen und an einer bestimmten Stelle steht eben dieser String.

Wenn String gefunden -> Löschen
Wenn String nicht gefunden -> Nächste Datei überprüfen.
Mitglied: Biber
Biber 13.09.2013 um 15:50:26 Uhr
Goto Top
Moin Maikell84,

du warst schon relativ nah dran mit deinem Versuch

Du must nur noch die Option /M verwenden, die nur die Dateinamen mit Treffern zurückgibt.

Beispiel am CMD-Prompt:

Zweite Zeile ist die Rückgabe.
Zum Testen habe ich nur das "@echo del" statt dem echten Befehl "del" ausgeführt.
Und ich habe noch den Parameter /i (ignoriere Klein/Grossschreibung) reingenommen.

Wenn du deine 300000 *.MAI-Dateien testen willst, dann solltest du vielleicht nicht *.MAI nehmen, sondern einen etwas einschränkendere Wildcard (2010*.AMI oder wie die Namenskonventionen da halt sind.

Rein interessehalber: in welchem privaten oder auch Firmen-Umfeld kann denn unbemerkt ein Ordner mit 300000++ Dateien entstehen, ohne dass sich jemand darum kümmert??

Grüße
Biber
Mitglied: Maikell84
Maikell84 13.09.2013 aktualisiert um 21:34:12 Uhr
Goto Top
Zitat von @Biber:
Moin Maikell84,

du warst schon relativ nah dran mit deinem Versuch

Du must nur noch die Option /M verwenden, die nur die Dateinamen mit Treffern zurückgibt.

Beispiel am CMD-Prompt:

Zweite Zeile ist die Rückgabe.
Zum Testen habe ich nur das "@echo del" statt dem echten Befehl "del" ausgeführt.
Und ich habe noch den Parameter /i (ignoriere Klein/Grossschreibung) reingenommen.

Vielen Dank!!!
Das funktioniert so, es zwar leider sehr träge, aber über Nacht wird da schon ein bisschen was gehen. :) face-smile


Rein interessehalber: in welchem privaten oder auch Firmen-Umfeld kann denn unbemerkt ein Ordner mit 300000++ Dateien entstehen,
ohne dass sich jemand darum kümmert??


Gestern Abend kurz nach Feierabend hat jemand den Mailaccount eines Users gehackt. Über den gehackten Account hat er dann die ganze Nacht systematisch SPAM-Mails rausgeblasen, bis am Morgen 300.000 E-Mails in der Queue waren und der Mailserver total verstopft war und nichts mehr ging!

Die Mailserver-Software bietet zwar die Möglichkeit die Queue anzuschauen und zu bearbeiten, aber bei dieser Menge friert die Software nur ein und stürtzt ab. Deshalb habe ich die Mails händisch aus der Queue rauskopiert, will sie nun mit o.g. Befehl filtern und die restlichen Mails dann zurück in die Queue kopieren.
(Bin mal gespannt auf wievielen Blacklists wir nun gelandet sind...)


Also vielen Dank für die Hilfe!