Mit Batch Datei Verzeichnis auslesen
Hallo Forum,
ich möchte per Batch Datei ein bestimmtes Verzeichnis auf meinem PC auslesen und alle Dateien bis auf die drei jüngsten löschen.
Ich mache täglich eine Sicherung meines Webservers als Datum.zip Datei.
Jetzt möchte ich das eine Batch-Datei ein mal die Woche per Task gestartet wird
und dieses Verzeichnis ausliest und alles löscht was älter ist als drei Tage.
Ich bin für jede Hilfe Dankbar.
Gruß
Jürgen
ich möchte per Batch Datei ein bestimmtes Verzeichnis auf meinem PC auslesen und alle Dateien bis auf die drei jüngsten löschen.
Ich mache täglich eine Sicherung meines Webservers als Datum.zip Datei.
Jetzt möchte ich das eine Batch-Datei ein mal die Woche per Task gestartet wird
und dieses Verzeichnis ausliest und alles löscht was älter ist als drei Tage.
Ich bin für jede Hilfe Dankbar.
Gruß
Jürgen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 109082
Url: https://administrator.de/contentid/109082
Ausgedruckt am: 13.11.2024 um 00:11 Uhr
4 Kommentare
Neuester Kommentar
Moin Schully,
über die Forumssuche nach "die ältesten x Dateien löschen" oder ähnlich müsstest Du auf vorsichtig ausgedrückt mehrere Batch-Beispiele für diese thematik kommen.
Die Strategie ist auch recht simpel:
Dient nur zu Demo, d.h. diese Zeile macht ein "@echo del [dateiname]" statt des "echten" DEL-Befehls.
Wie Du diese eine Zeile per Taskplaner startest, findest Du -vorsichtig ausgedrückt MEHRFACH mit einer Forumssuche über "Batch Taskplaner".
Grüße
Biber
P.S. Nicht böse sein für die Nicht-Rundum-sorglos-Fertiglösung, aber...
wer seine alle-bis-auf-die-jüngsten-drei-Dateien per taskplanergesteuertem Batch automatisch wegschrubbeln will, der sollte sich diese Zeile auch zusammenbraten und ggf. warten/anpassen können.
über die Forumssuche nach "die ältesten x Dateien löschen" oder ähnlich müsstest Du auf vorsichtig ausgedrückt mehrere Batch-Beispiele für diese thematik kommen.
Die Strategie ist auch recht simpel:
- lass dir über den DIR-Befehl mit Schalter /b wie billich und /o-d wie absteigend nach Datum eine Liste aller Dateien ausgeben
- überspringe die ersten 3 Zeilen (die jüngsten Dateien)
- hau wech den Rest.
for /f "skip=3 delims=" %i in ('dir d:\temp\*.* /a-d /b /o-d') do @echo del "d:\temp\%~i"
Wie Du diese eine Zeile per Taskplaner startest, findest Du -vorsichtig ausgedrückt MEHRFACH mit einer Forumssuche über "Batch Taskplaner".
Grüße
Biber
P.S. Nicht böse sein für die Nicht-Rundum-sorglos-Fertiglösung, aber...
wer seine alle-bis-auf-die-jüngsten-drei-Dateien per taskplanergesteuertem Batch automatisch wegschrubbeln will, der sollte sich diese Zeile auch zusammenbraten und ggf. warten/anpassen können.
Moin Schully,
bitte taste Dich in folgenden drei Schritten an das Wunschergebnis heran.
1) Starte die Batchdatei bis zum letzten erfolgreichen Test vom CMD-Prompt und nicht via Doppelklick. Wie Du ja selbst festgestellt hast, kommst Du nie zu Ansätzen bei der Fehlerlokalisierung bei "Die Datei startet und schließt sich sofort wieder"
2) Ändere die "einfachen" Prozentzeichen vor den FOR-Laufvariablen (%i) in doppelte Prozentzeichen (%%i).
3) wenn Du mit dieser Datei sinnvolle Ergebnisse bekommst, dann mach die beiden Zeilen "REM uncomment nach Test:" scharf, indem Du genau diesen Text herauslöscht, lösche die beiden Zeilen darüber und das "Pause" am Ende und gut.
Die Codeformatierung ist u.a. in unseren FAQ beschrieben.
Grüße
Biber
bitte taste Dich in folgenden drei Schritten an das Wunschergebnis heran.
1) Starte die Batchdatei bis zum letzten erfolgreichen Test vom CMD-Prompt und nicht via Doppelklick. Wie Du ja selbst festgestellt hast, kommst Du nie zu Ansätzen bei der Fehlerlokalisierung bei "Die Datei startet und schließt sich sofort wieder"
2) Ändere die "einfachen" Prozentzeichen vor den FOR-Laufvariablen (%i) in doppelte Prozentzeichen (%%i).
for /f "skip=3 delims=" %%i in ('dir G:\A\*.* /a-d /b /o-d') do (
echo del "G:\A\%%~i"
REM Erst mal sehen was gelöscht werden würde
REM uncomment nach Test:: Dann löschen
REM uncomment nach Test:: del "G:\A\%%~i"
)
pause
Die Codeformatierung ist u.a. in unseren FAQ beschrieben.
Grüße
Biber