rubono
Goto Top

Batch bestimmte Dateien löschen

Hallo,

ich habe ein Frage zu Batch

ich muss mehrere Ordner auf die Unterordner mit Namen "Bios" untersuchen und in diesen "Biosordnern" die 2 neuesten Versionen der darin enthaltenen Dateien beibehalten, die restlichen sollen gelöscht werden. Ich habe es bis jetzt geschafft die Pfade der Ordner aufzulisten und in eine Textdatei zu speichern mit: "dir /a:d /b /s Y:\Ordnername\*bios >datei.txt".
Nun würde ich gerne diese Textdatei zeilenweise auslesen und oben genannte Aufgabe ausführen.
Ich hoffe es kann mir jemand helfen.

Gruß rubono

Content-ID: 188878

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

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

bastla
bastla 31.07.2012 um 12:25:04 Uhr
Goto Top
Hallo rubono und willkommen im Forum!

Dazu brauchst Du doch keine Datei zu verwenden - ungetestet etwa so:
for /f "delims=" %%i in ('dir /s/b/ad "Y:\Ordnername\*bios"') do (  
    for /f "skip=2 delims=" %%a in ('dir /b/o-d "%%i"') do echo del "%%i\%%a"  
)
Solange das "echo" vor dem "del" steht, passiert noch nix - die Löschbefehle werden nur angezeigt; wenn's gut aussieht, einfach das "echo" entfernen ...

Grüße
bastla
Karo
Karo 31.07.2012 um 12:26:49 Uhr
Goto Top
Moin,

for /F "eol=; tokens=* DELIMS=" %%i in (Datei.txt) do dir %%i /b /O-D>datei2.txt && for /F "eol=; tokens=* DELIMS= SKIP=2" %%i in (Datei2.txt) do @ECHO %%i  

Das echo am Ende muss natürlich durch Dein Delete mit Pfad ersetzt werden, aber zum testen lieber trockenschwimmen ... face-wink

bye
Karo
Karo
Karo 31.07.2012 aktualisiert um 12:28:24 Uhr
Goto Top
@bastla
*LOL* lasse dem Meister natürlich den Vortritt face-wink

Gruß

Karo
bastla
bastla 31.07.2012 um 12:37:20 Uhr
Goto Top
@Karo
Danke - ist aber beides (der Vortritt und die Titulierung) nicht nötig ... face-wink

Grüße
bastla

P.S.: Ich war vermutlich auch nicht schneller, sondern habe nur früher angefangen ... face-wink
rubono
rubono 31.07.2012 um 14:25:18 Uhr
Goto Top
wow danke für die superschnelle antwort face-smile
ihr habt mir sehr geholfen dankeschön !

gruß

rubono
rubono
rubono 02.08.2012 um 14:07:36 Uhr
Goto Top
eine Frage hätte ich noch
könntet ihr mir die einzelnen zeilen erklären ?
Verstehe quasi nichts davon ausser das es zwei for schleifen sind face-smile

Gruß

rubono
bastla
bastla 02.08.2012, aktualisiert am 03.08.2012 um 08:43:05 Uhr
Goto Top
Hallo rubono!

Dann wollen wir mal:
for /f "delims=" %%i in ('dir /s/b/ad "Y:\Ordnername\*bios"') do (
liefert in %%i alle Ordner (wegen "/ad") unterhalb von "Y:\Ordnername", die dem Muster "*bios" entsprechen - und zwar inkl Pfadangabe (wegen "s") - das wusstest Du aber schon face-smile.
for /f "skip=2 delims=" %%a in ('dir /b/o-d "%%i"') do echo del "%%i\%%a"
listest dann in weiterer Folge für jeden dieser Unterordner die enthaltenen Dateien (zur Sicherheit wäre noch ein "/a-d" zu empfehlen) absteigend nach Änderungsdatum sortiert ("/o-d") auf und löscht sie (da nur Dateinamen geliefert werden, ist die Angabe des Ordnerpfades - steht in "%%i" - erforderlich), wobei wegen des "skip=2" die ersten beiden Dateien (und somit die beiden jüngsten) übersprungen werden.

Grüße
bastla
rubono
rubono 03.08.2012 um 08:40:03 Uhr
Goto Top
Hallo bastla

vielen Dank jetzt ist alles klar face-smile

Grüße rubono