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

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

Member: bastla
bastla Jan 05, 2007 at 17:05:51 (UTC)
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
Member: Dani
Dani Jan 05, 2007 at 17:10:00 (UTC)
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
Member: bastla
bastla Jan 05, 2007 at 17:16:42 (UTC)
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
Member: Dani
Dani Jan 05, 2007 at 17:25:17 (UTC)
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
Member: bastla
bastla Jan 05, 2007 at 17:25:56 (UTC)
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]
Member: Dani
Dani Jan 05, 2007 at 17:50:44 (UTC)
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
Member: Biber
Biber Jan 05, 2007 at 19:42:59 (UTC)
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
Member: bastla
bastla Jan 05, 2007 at 19:54:47 (UTC)
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
Member: Biber
Biber Jan 05, 2007 at 20:34:46 (UTC)
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
Member: bastla
bastla Jan 05, 2007 at 20:44:48 (UTC)
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
Member: Biber
Biber Jan 05, 2007 at 21:22:45 (UTC)
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
Member: Dani
Dani Jan 05, 2007 at 23:26:47 (UTC)
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
Member: bastla
bastla Jan 06, 2007 at 13:36:32 (UTC)
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