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-Key: 188878

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

Printed on: April 25, 2024 at 23:04 o'clock

Member: bastla
bastla Jul 31, 2012 at 10:25:04 (UTC)
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
Member: Karo
Karo Jul 31, 2012 at 10:26:49 (UTC)
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
Member: Karo
Karo Jul 31, 2012 updated at 10:28:24 (UTC)
Goto Top
@bastla
*LOL* lasse dem Meister natürlich den Vortritt face-wink

Gruß

Karo
Member: bastla
bastla Jul 31, 2012 at 10:37:20 (UTC)
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
Member: rubono
rubono Jul 31, 2012 at 12:25:18 (UTC)
Goto Top
wow danke für die superschnelle antwort face-smile
ihr habt mir sehr geholfen dankeschön !

gruß

rubono
Member: rubono
rubono Aug 02, 2012 at 12:07:36 (UTC)
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
Member: bastla
bastla Aug 02, 2012, updated at Aug 03, 2012 at 06:43:05 (UTC)
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
Member: rubono
rubono Aug 03, 2012 at 06:40:03 (UTC)
Goto Top
Hallo bastla

vielen Dank jetzt ist alles klar face-smile

Grüße rubono