Backup Ordner aufräumen

Quick and Dirty vom Ram programmiert und von mir ähhh verfeinert *g

Format der Backup Dateien: NAME_20100316.bak

@echo off & setlocal EnableDelayedExpansion

rem HIER ANPASSEN

rem Pfad zu den Backup-Files
set Backup_Path=d:\Backup\

rem Endung des Backup-Files
set Backup_ext=bak

rem Pfad zum LOG-File
set Log_Path=d:\backup\log\

rem Name des LOG Files
set Log_File=backup_aufraumen.log

rem Hier die Anzahl der Backups eintragen die behalten werden sollen max 25
set Backup_Days=10

rem AB HIER NICHT MEHR AENDERN

echo -----------------------------------------------------  >> !Log_Path!!Log_File!
echo START Backup_aufraemen %date% >> !Log_Path!!Log_File!
echo -----------------------------------------------------  >> !Log_Path!!Log_File!

set Today=%date:~6,4%%date:~3,2%%date:~0,2% 
echo Heute: !Today! >> !Log_Path!!Log_File!

set jahr=%date:~6,4%
echo Monat: !jahr! >> !Log_Path!!Log_File!

set monat=%date:~3,2%
echo Monat: !monat! >> !Log_Path!!Log_File!

set tag=%date:~0,2% 
echo Tag: !Tag! >> !Log_Path!!Log_File!

set /a vorxtagen=!Today!-!Backup_Days!
echo x: !vorxtagen! >> !Log_Path!!Log_File!
set vortag=%vorxtagen:~6,2%
echo VorTag: !vortag! >> !Log_Path!!Log_File!


if !vortag! gtr 31 (
set /a vormonat=!monat!-1
echo VorMonat_g: !vormonat! >> !Log_Path!!Log_File!


) else (
set vormonat=!monat!
echo VorMonat_n: !vormonat! >> !Log_Path!!Log_File!
)


if !vortag! == 00 (
set /a vormonat=!monat!-1
echo VorMonat: !vormonat! >> !Log_Path!!Log_File!
)

if !vormonat! lss !monat! (

if !vormonat!==1 set mon_tag=30 & set vormonat=01
if !vormonat!==2 set mon_tag=28 & set vormonat=02
if !vormonat!==3 set mon_tag=31 & set vormonat=03
if !vormonat!==4 set mon_tag=30 & set vormonat=04
if !vormonat!==5 set mon_tag=31 & set vormonat=05
if !vormonat!==6 set mon_tag=30 & set vormonat=06
if !vormonat!==7 set mon_tag=31 & set vormonat=07
if !vormonat!==8 set mon_tag=31 & set vormonat=08
if !vormonat!==9 set mon_tag=30 & set vormonat=09
if !vormonat!==10 set mon_tag=31
if !vormonat!==11 set mon_tag=30
if !vormonat!==12 set mon_tag=31 & set /a jahr=!jahr!-1

)else (
set mon_tag=!vortag!
)

echo vormonat: !vormonat! >> !Log_Path!!Log_File!
echo MOnat_Tag: !mon_tag! >> !Log_Path!!Log_File!
set /a diff=0
if !vortag! gtr 31 set /a diff=100-!vortag!
echo diff: !diff! >> !Log_Path!!Log_File!

if !diff! gtr 0 (
set /a mon_tag_2=0
set /a mon_tag_2=%mon_tag%-%diff%
if !mon_tag_2! lss 10 (
set mon_tag_2=0!mon_tag_2!
)
)else (
set mon_tag_2=!mon_tag!
)

echo Monat_Tag_2:!jahr!!vormonat!!mon_tag_2! >> !Log_Path!!Log_File!
set vorxtagen=!jahr!!vormonat!!mon_tag_2!

echo -----------------------------------------------------  >> !Log_Path!!Log_File!

FOR %%a in (!Backup_Path!*.!Backup_ext!) do (

set name=%%~na
echo !name! >> !Log_Path!!Log_File!
set nur_datum=!name:~5,8!
rem echo !nur_datum! >> !Log_Path!!Log_File!
if !nur_datum! LEQ !vorxtagen! del %%a
if !nur_datum! LEQ !vorxtagen! echo loeschen >> !Log_Path!!Log_File!

rem echo !vorxtagen! >> !Log_Path!!Log_File!

)
echo -----------------------------------------------------  >> !Log_Path!!Log_File!
echo ENDE Backup_aufraemen %date% >> !Log_Path!!Log_File!
echo -----------------------------------------------------  >> !Log_Path!!Log_File!

!UPDATE!
Ram der alte Pfuscher *g
in der Zeile: set nur_datum=!name:~5,8!
muss die 4 der Anzahl des Dateinamens vor dem Datum inkl des _ entsprechen
NAME_20100316.bak =5
NEUERNAME_20100316.bak =10

No votes yet.
Please wait...
Voting is currently disabled, data maintenance in progress.

Tags: , , ,

Hinterlasse eine Antwort