pacelu
Goto Top

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:

@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]

Content-Key: 144158

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

Printed on: April 19, 2024 at 11:04 o'clock

Member: Biber
Biber Jun 04, 2010 at 11:11:19 (UTC)
Goto Top
[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

>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%"
Damit wir mal sehen, was da unten denn ankommt.

Ich kann mir nur vorstellen, dass evtl der Registryparameter "DisableUNCCheck" nicht gesetzt ist (siehe Forumssuche) und deshalb PushD/popD nicht klappt.

Grüße
Biber
Mitglied: 77559
77559 Jun 04, 2010, updated at Oct 18, 2012 at 16:42:24 (UTC)
Goto Top
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. face-wink

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
Mitglied: 90776
90776 Jun 04, 2010 at 12:56:46 (UTC)
Goto Top
wie wärs mit forfiles?

Gruss

Switcher
Mitglied: 77559
77559 Jun 04, 2010 at 13:19:45 (UTC)
Goto Top
Zitat von @90776:
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
Member: Biber
Biber Jun 04, 2010 at 13:50:40 (UTC)
Goto Top
Moin LotPings,

Zitat von @77559:
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