Backupdateimanagement mit Bachtscript
Hallo,
Ich habe folgende Problemstellung:
Clients machen via Acronis True Image 2009 tägllich ein Differentieles Backup. Ich möchte nun das mittels der Vor- und Nachbefehlsoption von Acronis 2 Bachtfiles laufen die ein bisschen Dateimanagemend durchfüren.
Acronis erzeugt folgende filenamen:
Vollbackup: Username.tib
Differentieles Backup: Username?.tib //wobei Fragezeichen angibt das wievielte Differentiele Backup es ist.
also brauche 2 Batchfiles die folgendes bewirken:
Vor dem Backup:
Soll geprüft werden ob das letzte Differentiele Backup >= 30% der Größe des Vollbackups hat und das alte Vollbackup umbenennen in _Username.tib
Nach dem Backup:
Soll das ältere Differentielle Gelöscht werden
Ich habe folgende Problemstellung:
Clients machen via Acronis True Image 2009 tägllich ein Differentieles Backup. Ich möchte nun das mittels der Vor- und Nachbefehlsoption von Acronis 2 Bachtfiles laufen die ein bisschen Dateimanagemend durchfüren.
Acronis erzeugt folgende filenamen:
Vollbackup: Username.tib
Differentieles Backup: Username?.tib //wobei Fragezeichen angibt das wievielte Differentiele Backup es ist.
also brauche 2 Batchfiles die folgendes bewirken:
Vor dem Backup:
Soll geprüft werden ob das letzte Differentiele Backup >= 30% der Größe des Vollbackups hat und das alte Vollbackup umbenennen in _Username.tib
Nach dem Backup:
Soll das ältere Differentielle Gelöscht werden
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 100065
Url: https://administrator.de/contentid/100065
Ausgedruckt am: 05.11.2024 um 04:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo FISI-Azubi2010!
oder mit Zuweisung zu einer Variablen
Was Du mit der Variablen anstellen kannst, siehst Du bei "set /?" (Du wirst "set /a" benötigen), und Du solltest Dich auch für "if /?" interessieren ...
Grüße
bastla
wie sähe die Zeile aus mit der ich die Größe einer bestimmten Datei abfragen würde?
Die Richtung stimmt schon set "Pfad=Netzwerkpfad\Dateiname"
FOR %i IN ("%Pfad%") DO @echo %~zI
set "Pfad=Netzwerkpfad\Dateiname"
FOR %i IN ("%Pfad%") DO set "Bytes=%~zI"
@echo %Bytes%
Grüße
bastla
Hallo FISI-Azubi2010!
Hinsichtlich des "CEQ" musst Du noch einen weiteren Blick riskieren ...
Was Berechnungen unter CMD (Batch) angeht: Grundsätzlich kannst Du nur Ganzzahlen verwenden (für Dezimalstellen musst Du selbst Routinen erstellen), und daher wird es mit den 30 % nicht ganz genau gehen.
Für die Genauigkeit wäre es zwar besser, zunächst die Multiplilkation und dann erst die Division durchzuführen (da bei der Division eben nur der ganzzahlige Quotient weiter verwendet werden kann), allerdings gibt es eine Beschränkung der Genauigkeit auf 32 Bit (wovon das letzte Bit auch noch für das Vorzeichen "abgezwackt" wird, sodass die höchste positive Zahl 2^31 - 1 ist), was dazu führt, dass nur Zahlen bis 2.147.483.647 verwendet werden können - die Größe der .tib-Datei wird da vermutlich zum Problem ...
Eine Lösung dafür könnte sein, jeweiils auf die letzten 3 Stellen zu verzichten (und damit annähernd durch 1000 zu dividieren) und damit weiter zu rechnen. Das Bilden von Teilstrings ist ebenfalls in der Hilfe zu "set" zu finden.
Grüße
bastla
Hinsichtlich des "CEQ" musst Du noch einen weiteren Blick riskieren ...
Was Berechnungen unter CMD (Batch) angeht: Grundsätzlich kannst Du nur Ganzzahlen verwenden (für Dezimalstellen musst Du selbst Routinen erstellen), und daher wird es mit den 30 % nicht ganz genau gehen.
Für die Genauigkeit wäre es zwar besser, zunächst die Multiplilkation und dann erst die Division durchzuführen (da bei der Division eben nur der ganzzahlige Quotient weiter verwendet werden kann), allerdings gibt es eine Beschränkung der Genauigkeit auf 32 Bit (wovon das letzte Bit auch noch für das Vorzeichen "abgezwackt" wird, sodass die höchste positive Zahl 2^31 - 1 ist), was dazu führt, dass nur Zahlen bis 2.147.483.647 verwendet werden können - die Größe der .tib-Datei wird da vermutlich zum Problem ...
Eine Lösung dafür könnte sein, jeweiils auf die letzten 3 Stellen zu verzichten (und damit annähernd durch 1000 zu dividieren) und damit weiter zu rechnen. Das Bilden von Teilstrings ist ebenfalls in der Hilfe zu "set" zu finden.
Grüße
bastla
Hallo FISI-Azubi2010!
Sieh Dir einmal die Ausgabe von
an - vielleicht bringt Dich das auf eine Idee ("/od" könnte übrigens auch noch interessant werden).
Falls Du tatsächlich einen Wert in einer Datei zwischenspeichern wolltest, könntest Du einfach
zum Schreiben und
zum Einlesen verwenden (alternativ dazu natürlich auch per "for /f"-Schleife)
Grüße
bastla
Sieh Dir einmal die Ausgabe von
dir /b /on Username?.tib
Falls Du tatsächlich einen Wert in einer Datei zwischenspeichern wolltest, könntest Du einfach
>%Datei% echo %Wert%
set /p Wert=<%Datei%
Grüße
bastla