dani
Goto Top

Batch - Archiv überschreiben

Hallo zusammen,

ich schreibe zur Zeit einen kl. Batch, der bestimmte configs usw... sichert. Soweit funktioniert das Ganze auch. Erlegt jede Woche ein Archiv (name1, name2,usw). Doch wenn er bei 10 angekommen ist, soll er wieder das name1 überschreiben. Also ein ständiger Kreislauf.
OS ist Windows Server 2003 EE.
Warum ich das Ganze mache, ganz einfach uns "tolles" Backupprogramm hat manchmal einen Hänger. Somit habe ich mich entschlossen, dieses gegen ein paar Zeilen Batch zuersetzen und Geld zusparen.


Gruß
Dani

Content-Key: 48069

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

Ausgedruckt am: 19.03.2024 um 04:03 Uhr

Mitglied: bastla
bastla 05.01.2007 um 18:05:51 Uhr
Goto Top
Hallo Dani!

Du könntest es so anlegen, dass Du (nachdem alle 10 Dateien erstellt wurden) jeweils die älteste .zip-Datei suchst, diese löschst und den frei gewordenen Dateinamen für die neue .zip-Datei verwendest - etwa so:
echo off & setlocal
for /f %%i in ('dir D:\Sicherungen\*.zip /b /o-d') do set Letzte=%%i  
del D:\Sicherungen\%Letzte%
move D:\Sicherungen\Temp\neu.zip D:\Sicherungen\%Letzte%
Verbesserungen/Verschönerungen (wie etwa noch eine Variable für den Pfad, Logging, etc) fallen Dir (oder jedenfalls Biber) dazu sicher noch ein.

Grüße
bastla
Mitglied: Dani
Dani 05.01.2007 um 18:10:00 Uhr
Goto Top
Hi,
vielen Dank...so siehts schon mal gut aus.
Aber wenn ich das heute starte, legt er name1 an. So nun läuft es morgen wieder. Dann erkennt morgen name1 als ältestes Archiv!


Gruß
Dani
Mitglied: bastla
bastla 05.01.2007 um 18:16:42 Uhr
Goto Top
Hallo Dani!

Etwas anschieben musst Du schon ... face-wink Die Skizze ist für den laufenden Betrieb gedacht (nachdem alle 10 Dateien erstellt wurden). Dann werden diese 10 Dateinamen in einer "Rotation" verwendet.

Grüße
bastla
Mitglied: Dani
Dani 05.01.2007 um 18:25:17 Uhr
Goto Top
Hi,
stimmt...ich könnte einfach 10 dateien anlegen mit der Endung .rar. Diese werden dann überschrieben! Ich teste das mal in Ruhe und melde mich dann wieder!


Gruß
Dani
Mitglied: bastla
bastla 05.01.2007 um 18:25:56 Uhr
Goto Top
So, als Starthilfe: face-wink

echo off & setlocal
set Neue=0
for /l %%i in (10,-1,1) do if not exist D:\Sicherungen\Name%%i.zip set Neue=%%i
if [%Neue%]== goto :Rotation
move D:\Sicherungen\Temp\neu.zip D:\Sicherungen\Name%Neue%.zip
goto :eof
:Rotation
for /f %%i in ('dir D:\Sicherungen\Name*.zip /b /o-d') do set Letzte=%%i  
del D:\Sicherungen\%Letzte%
move D:\Sicherungen\Temp\neu.zip D:\Sicherungen\%Letzte%

Grüße
bastla

[Edit] Pfad bei "if not exist ..." ergänzt [/Edit]
Mitglied: Dani
Dani 05.01.2007 um 18:50:44 Uhr
Goto Top
Hi,
hab's erst gerade gesehen! So ungefähr sieht mein Batch auch aus. Ich ergänz ihn einfach mal um 1 oder 2 Zeilen. face-smile
Vielen Dank! Wünsch dir n schönes Wochenende!


Gruß
Dani
Mitglied: Biber
Biber 05.01.2007 um 20:42:59 Uhr
Goto Top
Hm, Dani,

wenn Du eh noch am Basteln bist...
bastla's :rotation geht ein bisschen in die Grütze, wenn noch gar keine Datei name*zip existiert.
Tritt zwar wirklich nur beim allerallerersten Mal auf, aber da es ja nun die Zeilenanzahl verdoppelt, würde ich diesen Fall berücksichtigen

...
:Rotation
if exist D:\Sicherungen\Name*.zip (
    for /f %%i in ('dir D:\Sicherungen\Name*.zip /b /o-d') do set Letzte=%%i  
) ELSE (
Set Letzte=name1.zip
)
IF exist D:\Sicherungen\%Letzte% del D:\Sicherungen\%Letzte%
move D:\Sicherungen\Temp\neu.zip D:\Sicherungen\%Letzte%

@bastla
Und Du hast Recht: Die Angaben für den Sicherungspfad und die Namens-Patterns hätte ich auch in Variablen gepackt.
Will doch nicht 10 Zeilen ändern, wenn sich eine Pfadangabe ändert... Und wenn, schreib ich einen Batch dafür face-smile

Grüße
Biber
Mitglied: bastla
bastla 05.01.2007 um 20:54:47 Uhr
Goto Top
@Biber
War nur auf die Schnelle hingeschrieben (den Pfad hatte ich nur zur Verdeutlichung noch nachgereicht)

bastla's :rotation geht ein bisschen in die Grütze, wenn noch gar keine Datei name*zip existiert.
Einspruch, Euer Biber - die Routine :rotation wird (in der zweiten Fassung oben) ja nur erreicht, wenn es keine freien Dateinamen von Name10 bis Name1 mehr gibt (und für die erste Fassung gilt das Kleingedruckte: nachdem alle 10 Dateien erstellt wurden) ...

Grüße
bastla
Mitglied: Biber
Biber 05.01.2007 um 21:34:46 Uhr
Goto Top
Nö, nö, bastla,

Einspruch abgelehnt.
set Neue=0
for /l %%i in (10,-1,1) do if not exist D:\Sicherungen\Name%%i.zip set Neue=%%i
if [%Neue%]== goto :Rotation
...
..wenn gar keine einzige name*.zip existiert, dann geht er wohl in die :Rotation.
Und kommt da ins Rotieren.
Aber klar, ein wenig spitzfindig ist es natürlich schon...

Ich finde Dani's grünen Haken vollauf gerechtfertigt und wenn er diese Frage nicht in "Betriebssysteme" gesetzt hätte,
hätte ich den Thread auch schon geschlossen.

Also, schönen Feierabend jetzt face-wink
Biber
Mitglied: bastla
bastla 05.01.2007 um 21:44:48 Uhr
Goto Top
@Biber

Nicht, dass wir uns noch im Kreis drehen face-wink, aaaber: Hast Du das wirklich mit dem Erfolg getestet, dass %Neue% nach der "for /l ..."-Zeile den Wert 0 hat? Bei mir endet es, wie es soll, damit, dass in %Neue% 1 steht (die Nummer der letzten der "nicht existenten" Dateien Name10.zip, Name9.zip, ..., Name1.zip)

Grüße
bastla
Mitglied: Biber
Biber 05.01.2007 um 22:22:45 Uhr
Goto Top
@bastla
Uuups - hast Recht.
Nehme alles zurück.
Keine Anpassungen nötig - und sollte mir in diesem oder nächsten Jahr endlich mal Urlaub bewilligt werden, wäre ich hocherfreut, wenn Du hier meine Urlaubsvertretung übernimmst.

Gruß
Biber
Mitglied: Dani
Dani 06.01.2007 um 00:26:47 Uhr
Goto Top
Hi,
Ich finde Dani's grünen Haken vollauf gerechtfertigt und wenn er diese Frage nicht
in "Betriebssysteme" gesetzt hätte, hätte ich den Thread auch schon geschlossen.
Also irgendwas stimmt hier im Forum nicht. Ich habe den Thread nämlich 1000%ig unter Entwicklung => Batch & Shell hinterlegt. Komisch....mal weiter drauf achten. Denn zur Zeit sind viele Threads im Bereich "Betriebsysteme", die da gar nicht hingehören!


Gruß
Dani
Mitglied: bastla
bastla 06.01.2007 um 14:36:32 Uhr
Goto Top
@Biber
... sollte mir in diesem oder nächsten Jahr endlich mal Urlaub bewilligt werden ...
Was willst Du denn mit dem Zeug? Urlaub ist doch das, was im Herbst im Urwald am Boden rumliegt, oder war da noch was anderes ...? face-wink
Urlaubsvertretung
Findest Du das als Strafe für ein ganz klein wenig Rechthaberei nicht etwas heftig?

Aber Spass beiseite, natürlich fühle ich mich sehr geehrt. face-smile

Grüße
bastla