Batchdatei - Löschen von älteren Sicherungen mit wbadmin
Das löschen von älteren Sicherungen von meinem Sicherungsskript geht nicht
Hallo Zusammen
Ich wäre froh wenn ihr mir mit meine Batchfile helfen könnt.
Mein Batchfile hat die Aufgabe eine Sicherung mit wbadmin auf ein RDX-Band zu machen.
Die Sicherung geht auch ohne Probleme, jedoch habe ich Probleme mit dem löschen.
In diesem Skript habe ich eingebaut, dass es ein Ordner mit Zeit und Datum generiert und dass er die Sicherungen, welche 3 Monate alt sind, löscht.
Jetzt möchte ich gerne, dass er die Sicherungen, welche älter als 5 Tagen sind, löscht. Kann mir jemand helfen?
Mein Skript sieht folgendermassen aus:
[Edit Biber] Codeformatierung [/Edit]
Hallo Zusammen
Ich wäre froh wenn ihr mir mit meine Batchfile helfen könnt.
Mein Batchfile hat die Aufgabe eine Sicherung mit wbadmin auf ein RDX-Band zu machen.
Die Sicherung geht auch ohne Probleme, jedoch habe ich Probleme mit dem löschen.
In diesem Skript habe ich eingebaut, dass es ein Ordner mit Zeit und Datum generiert und dass er die Sicherungen, welche 3 Monate alt sind, löscht.
Jetzt möchte ich gerne, dass er die Sicherungen, welche älter als 5 Tagen sind, löscht. Kann mir jemand helfen?
Mein Skript sieht folgendermassen aus:
@echo off
@title Datensicherung
@color 1F
rem ##################################################
rem # WBAdmin-Sicherung auf RDX (v0.1) #
rem # ********************* #
rem ##################################################
rem Name des Servers
set Backupname=%COMPUTERNAME%
rem Datensicherung nach \\%Backupname%\Sicherung (auf RDX)
set backupdir=\\%Backupname%\Sicherung\
rem ##########################################################
rem # Start Sicherung #
rem ##########################################################
rem ### Datensicherung ###
rem **** Zeitstempel-String erzeugen ****
for /f "Tokens=1-4 Delims=/. " %%i in ('date /t') do set dt=%%i-%%j-%%k-%%l
for /f "Tokens=1" %%i in ('time /t') do set tm=-%%i
set tm=%tm::=-%
set dtt=%dt%%tm%
rem **** Sicherung starten *****
rem Verzeichnis erstellen, wenn nicht vorhanden
if not exist "%backupdir%\%dtt%" md "%backupdir%\%dtt%"
rem Sicherung ausführen mit wbadmin
wbadmin start backup -quiet -backuptarget:"%backupdir%\%dtt%" -include:c:,d:
rem ********************************************************
rem * Löschen von älteren Daten *
rem ********************************************************
for /f "delims=- tokens=2,3" %%a in ("%dtt%") do set "monat=%%a" &set /a jahr=%%b
if %monat:~,1%==0 set "monat=%monat:~1%"
set /a monat-=7
if %monat% lss 1 (
set /a monat+=3
set /a jahr-=1
)
if %monat% lss 10 set "monat=0%monat%"
set "pattern=[0-3]*[0-9]-%monat%-%jahr%-"
pushd "%backupdir%"
for /d %%a in (*) do (echo %%a|findstr /r /c:"^%pattern%">nul&& rd /s /q "%%a")
popd
[Edit Biber] Codeformatierung [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 144158
Url: https://administrator.de/contentid/144158
Ausgedruckt am: 23.11.2024 um 00:11 Uhr
5 Kommentare
Neuester Kommentar
[Edit --- Kommentar gegenstandslos -- hatte die Frage falsch verstanden. Bitte einfach ignorieren. --- /Edit]
Moin PaceLu,
sieht doch erstmal ganz unverdächtig aus, dein Schnipsel.
Wenn der vorangegangene Sicherung-Teil das tut, was er soll und entsprechend auch Unterverzeichnisse der Konvention "tt-mm-jjjj-uhrzeit" anlegt,
dann würde der Rest unten auch passen
--> Allerdings wüssten wir genauer, wo es in die Grütze geht, wenn du
Ich kann mir nur vorstellen, dass evtl der Registryparameter "DisableUNCCheck" nicht gesetzt ist (siehe Forumssuche) und deshalb PushD/popD nicht klappt.
Grüße
Biber
Moin PaceLu,
sieht doch erstmal ganz unverdächtig aus, dein Schnipsel.
Wenn der vorangegangene Sicherung-Teil das tut, was er soll und entsprechend auch Unterverzeichnisse der Konvention "tt-mm-jjjj-uhrzeit" anlegt,
dann würde der Rest unten auch passen
>set "pattern=[0-3]*[0-9]-02-2009-"
>dir /b /a:D|findstr /r /c:"^%pattern%"
13-02-2009-uhrzeit
--> Allerdings wüssten wir genauer, wo es in die Grütze geht, wenn du
- nach der jetzigen Zeile 65 mal ein einbaust "echo [zeile65] %cd%" --ohne Anführungszeichen--
- vor die jetzige Zeile 69 einbaust. for /d %%a in (*) do (echo %%a|findstr /r /c:"^%pattern%"
Ich kann mir nur vorstellen, dass evtl der Registryparameter "DisableUNCCheck" nicht gesetzt ist (siehe Forumssuche) und deshalb PushD/popD nicht klappt.
Grüße
Biber
Moin Biber,
ich glaube PaceLu's Probleme beruhen eher darauf, die "älter als 3Monate" auf "älter 5 Tage" umzustellen.
Grundsätzlich bin der Meinung das, wer ein nicht sortierfähiges Datumsformat nutzt, die daraus resultierenden Probleme verdient hat.
Da Batch ohne 3rd Party Tools für Datumsberechnungen nach wie vor schlecht geeignet ist, sei hier nur auf deine Anleitung verwiesen, mit deren Hilfe ein Datum -5 tage berechnet werden kann.
Bei einem geeigneten Datum wäre ein Dir ausreichend, bei dem hier vorliegenden muss für jede Datei tt-mm-jjjj in jjjj-mm-tt umgestellt werden um einen kleiner Vergleich zu erlauben.
Gruß
LotPings
ich glaube PaceLu's Probleme beruhen eher darauf, die "älter als 3Monate" auf "älter 5 Tage" umzustellen.
Grundsätzlich bin der Meinung das, wer ein nicht sortierfähiges Datumsformat nutzt, die daraus resultierenden Probleme verdient hat.
Da Batch ohne 3rd Party Tools für Datumsberechnungen nach wie vor schlecht geeignet ist, sei hier nur auf deine Anleitung verwiesen, mit deren Hilfe ein Datum -5 tage berechnet werden kann.
Bei einem geeigneten Datum wäre ein Dir ausreichend, bei dem hier vorliegenden muss für jede Datei tt-mm-jjjj in jjjj-mm-tt umgestellt werden um einen kleiner Vergleich zu erlauben.
Gruß
LotPings
wie wärs mit forfiles?
Gruss
Switcher
Gruss
Switcher
Zitat von @90776:
wie wärs mit forfiles?
wie wärs mit forfiles?
Ähnlich wie delage32 arbeitet das nicht in allen Windows Versionen enthaltene forfiles nach dem Dateidatum, nicht nach dem hier geforderten im Namen enthaltenen Datum.
Gruß
LotPings
Moin LotPings,
Jepp, hast vollkomen Recht... ich hatte die Fragestellung in der Tat zu flüchtig überflogen... den wesentlichen Satz gar nicht wahrgenommen.
Insofern ich mein Kommentar vollkommen am Thema vorbei und kann gefahrlos überlesen werden.
Jetzt, nachdem ich glaube verstanden zu haben, um was es denn hier eigentlich geht, kann ich deinen Ausführungen inhaltlich nichts hinzufügen.
Full ACK.
Grüße
Biber
Zitat von @77559:
Moin Biber,
ich glaube PaceLu's Probleme beruhen eher darauf, die "älter als 3Monate" auf "älter 5 Tage" umzustellen.
Moin Biber,
ich glaube PaceLu's Probleme beruhen eher darauf, die "älter als 3Monate" auf "älter 5 Tage" umzustellen.
Jepp, hast vollkomen Recht... ich hatte die Fragestellung in der Tat zu flüchtig überflogen... den wesentlichen Satz gar nicht wahrgenommen.
Insofern ich mein Kommentar vollkommen am Thema vorbei und kann gefahrlos überlesen werden.
Jetzt, nachdem ich glaube verstanden zu haben, um was es denn hier eigentlich geht, kann ich deinen Ausführungen inhaltlich nichts hinzufügen.
Full ACK.
Grüße
Biber