integral
Goto Top

Batch für autom. löschen nach File-Grösse

Hallo liebe Gemeinde!

Ich möchte *.wav-Dateien in einem Verzeichnis die kleiner als zB. 100kB sind automatisch mittels einer *.bat löschen,
diese *.bat sollte in einem bestimmten Verzeichnis und Unterverzeichnis nach Dateien <100kB suchen und im 5-Minutenintervall löschen.

Hat jemand ein solches Script parat?

Danke

Content-ID: 115657

Url: https://administrator.de/forum/batch-fuer-autom-loeschen-nach-file-groesse-115657.html

Ausgedruckt am: 22.12.2024 um 17:12 Uhr

bastla
bastla 09.05.2009 um 14:13:15 Uhr
Goto Top
Hallo Integral und willkommen im Forum!

Für's Löschen wäre es eigentlich nur eine Zeile:
for %%i in ("D:\Ein Verzeichnis\*.wav") do if %%~zi lss 100000 echo del "%%i"
Das "echo" vor dem "del" sorgt dafür, dass noch nicht wirklich gelöscht, sondern der Löschbefehl nur angezeigt wird.

Hinsichtlich der Wiederholung alle 5 Minuten könntest Du zB diese Zeile zusammen mit der "sleep.exe" aus den Windows Server 2003 Resource Kit Tools in einer (Endlos-)Schleife platzieren ...

Grüße
bastla
Integral
Integral 10.05.2009 um 11:03:19 Uhr
Goto Top
Ich danke für die rasche Antwort, leider funktioniert dieses Script nicht (oder ich bin zu dumm!). Ich hab die Zeile einfach in ein Text-File kopiert und in löschen.bat unbenannt, nur beim ausführen passiert nichts.
bastla
bastla 10.05.2009 um 11:11:53 Uhr
Goto Top
Hallo Integral!
Ich hab die Zeile einfach in ein Text-File kopiert und in löschen.bat unbenannt, nur beim ausführen passiert nichts.
Zumindest den Verzeichnisnamen "D:\Ein Verzeichnis" wirst Du vermutlich angepasst haben face-wink, daher sollte eigentlich eine Liste der zu löschenden Dateien (wenn es gerade passend kleine gibt) ausgegeben werden. Wenn Du den Batch direkt von der Kommandozeile startest, kannst Du diese Liste dann in aller Ruhe kontrollieren; bei einem Start per Doppelklick aus einem Explorerfenster müsstst Du noch eine Zeile
pause
hinzufügen, damit das Fenster nach der Ausführung nicht sofort geschlossen wird.

Grüße
bastla
Integral
Integral 10.05.2009 um 12:38:48 Uhr
Goto Top
Gelesen werden sie zwar, aber nicht gelöscht:


C:\Dokumente und Einstellungen\Maritschnegg\Desktop>for %i in ("D:\Test\*.wav")
do if %~zi LSS 700000 echo del "%i"

C:\Dokumente und Einstellungen\Maritschnegg\Desktop>if 6253198 LSS 700000 echo d
el "D:\Test\dj.wav"

C:\Dokumente und Einstellungen\Maritschnegg\Desktop>if 592242 LSS 700000 echo de
l "D:\Test\hotline.wav"
del "D:\Test\hotline.wav"

C:\Dokumente und Einstellungen\Maritschnegg\Desktop>if 16418830 LSS 700000 echo
del "D:\Test\schmiers in die haar.wav"

C:\Dokumente und Einstellungen\Maritschnegg\Desktop>pause
Drücken Sie eine beliebige Taste . . .
Biber
Biber 10.05.2009 um 12:59:25 Uhr
Goto Top
Moin Integral,

Gelesen werden sie zwar, aber nicht gelöscht:
Dieses Verhalten nennt man/frau in unseren Kreisen anerkennend "works as designed".

Genau so sollte es sein, denn vor dem unbeaufsichtigten Löschen von ein paar GByte sollte ein angemessener Test vorangehen.
Bitte lies noch einmal die detaillierten Kommentare von bastla.

Grüße
Biber
bastla
bastla 10.05.2009 um 13:19:35 Uhr
Goto Top
... und damit's etwas besser lesbar wird, erweitere den Batch auf:
@echo off & setlocal
for %%i in ("D:\Test\*.wav") do if %%~zi LSS 700000 echo del "%%i"  
pause
Grüße
bastla
Biber
Biber 10.05.2009 um 17:43:27 Uhr
Goto Top
Moin bastla,

das SetLocal verhindert, dass Du versehentlich globale Variablen mit Deinen SETs überschreibst?? *g

Grüße
Biber
bastla
bastla 10.05.2009 um 17:48:34 Uhr
Goto Top
@Biber
Wer mir wohl diese "Standardfloskel" seinerzeit nahegelegt hat ... face-wink

... und, abgesehen von der "Automatik": Wer weiß, wie sich dieser Batch noch auswächst ... face-wink

Grüße
bastla

P.S.: [OT] Du warst das wohl nicht, der die ganzen Smileys eingezogen hat (ist ja noch Sonntag *g)? [/OT]
Biber
Biber 10.05.2009 um 18:15:36 Uhr
Goto Top
Moin bastla,

<OT>
Ich bin ja nur heute so sensibilisiert für Standardfloskeln und deren Risiken, weil heute das Involuntary You Too das word of the day auf Urban Dictionary ist.

Was die fehlenden Smiley angeht... ich brauche ja keine.
Ich scherze doch nie.
</OT>

Grüße und schönen Sonntag
Biber
Integral
Integral 10.05.2009 um 19:37:35 Uhr
Goto Top
Ich will mal erklären wozu ich dieses Script benötige:
Die AVAYA IP-Office500 (Telefonanlage) hat ein Voicemail-System, sprich, wenn ein Anrufer auf dieser Box landet werden etwa nur 20% Nachrichten hinterlassen. Also sind 80% der Nachrichten eigentlich "Null-Nachrichten", wo eben der Anrufer nach Aufzeichnungsbeginn vielleicht nach 1 oder 2 Sekunden auflegt. Und diese Nachrichten werden aber ebenfall aum Apparat signalisiert. Um die Flut der leeren Nachrichten einzudämmen möchte ich eben alle wav-files die kleiner als 100kB sind automatisch löschen. (100 kB sind ca. 3 Sekunden Aufnahme).

Diese Batch sollte so alle 5 oder 10 Minuten ein Verzeichnis durchsuchen und alle wav´s kleiner als 100 kB ohne Bestätigung oder Abfrage löschen.
Der Verzeichnisstamm heisst "Accounts", darunter liegen die Ordner der Nebenstellen.