denny
Goto Top

Dateien in best. Verzeichnis suchen und nur die 3 Neuesten Dateien behalten.

Batch ?

Hallo !
Ich brauche ein Skript welches in einem Verzeichniss die drei neuesten Dateien behält und den Rest löscht.
Ist wahrscheinlich sehr trivial für Leute die sich mit Batch-dateien auskennen.
Unter Linux hätte ich das Skript auch schon locker fertig, aber unter Windows ist das eine echte Hürde für mich.
(Kann Batch das überhaupt ? / Ich habe keine Ahnung von VB)

Wäre super wenn mir jemand sein Wissen zur Verfügung stellt und etwas unter die Arme greift face-wink

MfG
denny

Content-ID: 44090

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

Ausgedruckt am: 17.11.2024 um 23:11 Uhr

Biber
Biber 09.11.2006 um 16:27:17 Uhr
Goto Top
Moin denny,

Grundgerüst einer Skizze einer Batch-Lösung wäre folgende Zeile am CMD-Prompt:
for /f "skip=3 delims=" %i in ('dir /a-D /o-d /b *.*') do @echo Del  /y %~i  

Dieser Schnipsel würde Dir den "DEL /Y-Befehl auf alle Dateien außer den drei jüngsten anwenden.
Im aktuellen Verzeichnis.
Das kannst Du jetzt als Batch beliebig verfeinern, wenn Du es öfters mal brauchst:

- ein PopD und PushD drumherum, um in das Verzeichnis zu wechseln/zurückzuwechseln.
- den Pfad natürlich als Parameter und eventuell auch die ("Anzahl Erhaltenswerte").

Gruß
Biber
P.S. VBSkript halte ich für etwas überdimensioniert für so einen pilpul.
hatzing
hatzing 09.11.2006 um 16:33:35 Uhr
Goto Top
Da gibts auch ein kleines Tool, "delage", siehe unten!
denny
denny 09.11.2006 um 16:35:28 Uhr
Goto Top
Vielen dank für die schnelle Antwort.
das ist ja genau was ich brauche face-smile
Ich war nah dran. Aber knapp daneben ist auch vorbei.
Was bedeutet das letzte %~1 ?

MfG
denny
denny
denny 09.11.2006 um 16:40:39 Uhr
Goto Top
Danke !
Das Tool werde ich mir auch mal anschauen.
Hätte ich mal genauer geschaut, war nämlich
bei diesem Horst Schaeffer auf der Seite um mir sein Batch-Tutorial
einzuverleiben.
Biber
Biber 09.11.2006 um 16:53:42 Uhr
Goto Top
Moin denny,

Was bedeutet das letzte %~1 ?

Hm.. das %~i in diesem Fall bedeutet den "Wert der Zählvariablen ohne umschließende Anführungszeichen".
Siehe Hilfe zu FOR /?

Und wo Du es grad ansprichst, eigentlich muss es auch
for /f "skip=3 delims=" %i in ('dir /a-D /o-d /b *.*') do @echo Del  /y "%~i"  
... heißen, damit auch Dateien "mit Leerzeichen im Namen.xyz" keine Probleme machen.

Gruß
Biber
denny
denny 10.11.2006 um 10:04:35 Uhr
Goto Top
Hallo !
So ganz funktioniert das bei mir nicht.
Und zwar werden die Dateien nicht gelöscht wenn die Batch-Datei durchläuft.
Es sieht so aus als ob die "del" Anweisungen kein Prompt erhalten.
z.B steht bei der Ausgabe dann:
del /y "datei1.xxx"
del /y "datei2.xx"

usw.
Aber wie gesagt ohne Prompt.

Gebe ich dden Del-Befehl von Hand ein funktioniert es.

Gruß
Denny
denny
denny 10.11.2006 um 10:10:35 Uhr
Goto Top
Ich hab das echo am Ende weggenommen. Jetzt gehts.

MfG denny
Biber
Biber 10.11.2006 um 10:15:32 Uhr
Goto Top
Moin denny,

sorry, sonst schreib ich immer dazu
das "Echo" zum Scharfmachen herausnehmen..
...gestern hab ich es wohl mal vergessen.

[Ich poste hier ungern etwas, was tatsächlich Daten verändert oder löscht -
lieber ist mir, wenn der Schnipsel anzeigt, was er machen würde.....]

Grüße
Biber
denny
denny 10.11.2006 um 10:24:28 Uhr
Goto Top
Kein Thema. Ist auch richtig so.
Ich danke nochmal für die schnelle Hilfe.

MfG
denny