ichweissnicht
Goto Top

Batchdatei zur Datensicherung auf anderer Partition?

Hallo,

ich beschäftige mich seit relativ kurzer Zeit mit dem schreiben von Batchdateien da sie ein nützliches Werkzeug zum organisieren und verwalten eines PCs sind.
Ich habe meine Festplatte in zwei Partitionen, C:\ und D:\, (auch Sicherung genannt) unterteilt. Auf der Partition C:\ befindet sich Windows XP inklusive SP2 und die zweite Partition soll zur Datensicherung des Ordners "Eigene Dateien" dienen. Die Datensicherung des Ordners "Eigene Dateien" möchte ich aber gerne per Batchdatei bei herunterfahren des PCs ausführen lassen und soll folgendermaßen ablaufen:

Auf dem Laufwerk D:\ exestiert ein Ordner Backup in dem Ordner mit dem Namen Eigene Dateien plus dem Zusatz des aktuellen Datums und der aktuellen Uhrzeit erstellt werden sollen. In diesem Ordner sollen dann alle Ordner und Dateien, beim herunterfahren des PCs, des sich auf der Partition C:\ befindenden Userordners "Eigene Dateien" gesichert werden. Wobei 7 Ordner erstellt werden sollen, die die Datensicherung des jeweiligen Tages enthalten.
z. B:

Eigene Dateien aktuelles Datum und Uhrzeit (Ordner 1)
Eigene Dateien aktuelles Datum und Uhrzeit (Ordner 2)
Eigene Dateien aktuelles Datum und Uhrzeit (Ordner 3)
Eigene Dateien aktuelles Datum und Uhrzeit (Ordner 4)
Eigene Dateien aktuelles Datum und Uhrzeit (Ordner 5)
Eigene Dateien aktuelles Datum und Uhrzeit (Ordner 6)
Eigene Dateien aktuelles Datum und Uhrzeit (Ordner 7)

Nach Ablauf der 7 Datensicherung soll der älteste Ordner, in diesem Beispiel Ordner 1 durch den aktuellen Ordner der Datensicherung ersetzt werden. Also so, dass die erste Datensicerung (Ordner 1) durch die achte Datensicherung überschrieben wird.

Könnt ihr mir bitte bei diesem Problem helfen.
Vielen Dank

IchWeissNicht

Content-Key: 98395

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

Printed on: April 23, 2024 at 08:04 o'clock

Member: miniversum
miniversum Oct 03, 2008 at 16:12:15 (UTC)
Goto Top
Ungetestet könnte es so funktionieren:
@echo off
set "quelle=%USERPROFILE%\Eigene Dateien"  
set "ziel=D:\Eigene Dateien %Date:.=% %time::=%"  

REM Älteste Sicherung löschen
FOR /F "skip=6 delims=" %%i in ('dir /B /AD /O-D "%ziel%"') do rd /S /Q "%ziel%\%%i"  

REM Kopie durchführen
copy "%quelle%" "%ziel%"  
Member: IchWeissNicht
IchWeissNicht Oct 03, 2008 at 18:04:38 (UTC)
Goto Top
Vielen Dank für deine Hilfe.
Habe das Script so eben ausprobiert und es funktioniert teilweise so wie ich mir es gedacht habe. Das Problem besteht darin, das unter D:\Backup\ kein Sicherungsordner Eigene Dateien plus dem Zusatz des aktuellen Datums und der aktuellen Uhrzeit, der dann die gesicherten Dateien enthält, erstellt wird sondern eine gleichnamige undefinierbare Datei deren Inhalt, wenn man sie mit einem Editor öffnet, irgendwelche Zeichen enthält.
Gibt es eine einfache Möglichkeit dieses Problem zu beseitigen.

Vielen Dank
Member: bastla
bastla Oct 03, 2008 at 20:34:06 (UTC)
Goto Top
Hallo IchWeissNicht!

Wird es besser, wenn Du Zeile 9 durch
xcopy /e /c /i "%quelle%" "%ziel%"  
ersetzt?

Grüße
bastla
Member: IchWeissNicht
IchWeissNicht Oct 04, 2008 at 10:17:50 (UTC)
Goto Top
Vielen Dank.
Mit der Erstellung des Sicherungsordners "Eigene Dateien" plus dem Zusatz des aktuellen Datums und der aktuellen Uhrzeit funktioniert es mit deinem Tip super.
Wie ich gerade heraus gefunden habe, funktioniert das überschreiben des jeweiligen Sicherungsordners jedoch nicht. Es werden immer neue Sicherungsordner angelegt.
Eigentlich sollte nach Ablauf der 7 Datensicherung, die älteste Datensicherung, in diesem Beispiel Ordner 1 (siehe Beispiel oben) durch die aktuelle Datensicherung ersetzt werden. So das die erste Datensicherung (Ordner 1) durch die achte Datensicherung überschrieben wird.
Gibt es ein Weg dieses Problem ohne Mithilfe von Extra-Programmen zu lösen?

Vielen Dank
Member: miniversum
miniversum Oct 04, 2008 at 10:43:46 (UTC)
Goto Top
Nachvollziehen kann ich nicht warum es nicht funktionieren sollte. Ich habe das ganze bei mir hier mit folgender Zeile nachgestellt:
FOR /F "skip=6 delims=" %%i in ('dir /B /AD /O-D "%ziel%"') do echo rd /S /Q "%ziel%\%%i"  
So wird angezeigt welche Ordner gelöscht werden. Es sollten dabei immer die neusten 6 Ordner behalten werden und alle anderen gelöscht, unabhängig von deren Namen. Sortiert wird nach dem Erstelldatum.
Member: bastla
bastla Oct 04, 2008 at 10:53:17 (UTC)
Goto Top
@miniversum

Da %ziel% ja aktuelles Datum samt Uhrzeit beinhaltet, wird die "for"-Schleife keinen Ordner finden - daher eher:
FOR /F "skip=6 delims=" %%i in ('dir /B /AD /O-D "D:\Eigene Dateien *"') do echo rd /S /Q "%ziel%\%%i"  
Grüße
bastla
Member: IchWeissNicht
IchWeissNicht Oct 05, 2008 at 12:46:41 (UTC)
Goto Top
Danke für eure Mithilfe.
Leider funktioniert das überschreiben des jeweiligen älteren Sicherungsordners durch den aktuellen noch nicht. Es werden immer neue Sicherungsordner angelegt. Habe jetzt mal den Code gepostet, so wie ich ihn auch zu ausprobieren auf meinen Rechner habe. In diesem Code habe ich nur den Sicherungspfad auf H:\Backup\ und den Sicherungszähler auf 3 angepaßt, da mir 7 Sicherungen doch es viel erschienen zwecks Platzbedarf.

@echo off
set "quelle=C:\Dokumente und Einstellungen\User\Eigene Dateien"  
set "ziel=H:\Backup\Eigene Dateien %Date:.=% %time::=%"  

REM Älteste Sicherung löschen 
FOR /F "skip=3 delims=" %%i in ('dir /B /AD /O-D "H:\Backup\Eigene Dateien *"') do echo rd /s /q "%ziel%\%%i"  

REM Kopie durchführen
xcopy /e /c /i "%quelle%" "%ziel%"  

Könnt ihr mir bitte helfen und posten wo der Fehler sein könnte?
Danke
Member: bastla
bastla Oct 05, 2008 at 13:23:44 (UTC)
Goto Top
Hallo IchWeissNicht!

So sollte es dann wirklich gehen:
@echo off & setlocal
set "quelle=C:\Dokumente und Einstellungen\User\Eigene Dateien"  
set "ziel=H:\Backup  
set "pre=Eigene Dateien"  

set "timestamp=%Date:.=% %Time::=%"  
set "timestamp=%timestamp:~,-3%  

REM Älteste Sicherung löschen 
FOR /F "skip=3 delims=" %%i in ('dir /B /AD /O-D /TC "%ziel%\%pre%*"') do rd /s /q "%ziel%\%%i"  

REM Kopie durchführen
xcopy /e /c /i "%quelle%" "%ziel%\%pre% %timestamp%\"  
Bei der vorigen Variante war ua auch noch ein "echo" vor dem "rd" enthalten - damit wurde der Löschbefehl nur angezeigt, aber nicht ausgeführt (beim Testen sinnvoll, wenn's dann tatsächlich laufen soll, natürlich etwas hinderlich face-wink).

Grüße
bastla
Member: IchWeissNicht
IchWeissNicht Oct 19, 2008 at 15:01:55 (UTC)
Goto Top
Vielen Dank für eure Hilfe.
Es funktioniert genau so wie ich mir es vorgestellt habe. face-smile