zunaras
Goto Top

dateien zu ZIP hinzufügen anhand des Änderungsdatums

Hallo,

in einem Verzeichnis befinden sich mehrere Sicherungsdateien mit Sicherungsdatum versehen. Wo auch regelmäßig neue hinzugefügt werden.
Diese lasse ich in intervallen in ZIPs verschieben.

c:\programme\winzip\wzzip /m /u /yb /p d:\Sicherung\gezippt\Sicherung_%date%.zip d:\sicherung\*.*

Das geht auch alles ohne Probleme.

Manchmal bleiben vom Vortag aber noch ein paar Sicherungsdateien übrig, die dann in ein ZIP des aktuellen Datums verschoben wird.

Kann man das Änderungsdatum der Dateien auslesen und dem dazugehörigen gestrigen ZIP noch hinzufügen? Damit alles zusammen für einen Tag abgelegt ist.

Gruß
Zunaras

Content-Key: 111533

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

Printed on: April 20, 2024 at 00:04 o'clock

Mitglied: 60730
60730 Mar 16, 2009 at 14:10:11 (UTC)
Goto Top
Moin,

im "einfachsten" Fall einfach deine Zip Zeile benutzen und danach ein:
if exist laufwerk:\pfad\zuzippende_dateien.suffix goto zipzeile

Wäre wohl einfacher.


Also:
:zip
start /wait c:\programme\winzip\wzzip /m /u /yb /p d:\Sicherung\gezippt\Sicherung_%date%.zip d:\sicherung\*.*
if exist d:\sicherung\*.* goto zip
Gruß
Member: Zunaras
Zunaras Mar 16, 2009 at 14:47:37 (UTC)
Goto Top
Hallo und danke!

Klappt soweit ganz gut.
Zum Schluss kommt der/die/das Batch in eine Programmschleife.
wzzip wird ewig neu gestartet.

Gruß
Mitglied: 60730
60730 Mar 16, 2009 at 16:57:49 (UTC)
Goto Top
hi,

"Schleife" - yupp das "kommt" davon face-wink

. und .. sind ja in jedem Ordner vorhanden und zählen logischerweise auch zu *.* *merde* && mea Culpa face-wink


:zip
start /wait c:\programme\winzip\wzzip /m /u /yb /p d:\Sicherung\gezippt\Sicherung_%date%.zip d:\sicherung\*.*
dir d:\sicherung\*.*|find "0 Datei(en) && goto end  
echo es wurden noch Dateien gefunden && goto zip
:end
..sollte dann besser funktionieren.

Gruß
edit
ich schau nachher nochmal vorbei - es geht auch "schöner"
/edit
Member: bastla
bastla Mar 16, 2009 at 18:44:09 (UTC)
Goto Top
@timobeil
Meinst Du etwas in der Art?
dir d:\sicherung /a-d >nul 2>&1 && goto :zip
Grüße
bastla
Member: Zunaras
Zunaras Mar 16, 2009 at 18:59:40 (UTC)
Goto Top
Hallo,

das funktioniert auch!

Nur noch die Sache mit dem Änderungsdatum der Datei.
Also: Kuck nach Änderungsdatum der zu sichernden Datei und verschieb sie in das vorhandene oder neue ZIP

Wäre schön, wenn die Dateien von gestern auch in das ZIp von gestern kommen. face-smile

Grüße
Member: bastla
bastla Mar 16, 2009 at 19:08:18 (UTC)
Goto Top
Hallo Zunaras!

Ungetestet etwa so:
pushd d:\sicherung
for /f "delims=" %%i in ('dir /b /a-d') do for /f %%d in ("%%~ti") do start /wait c:\programme\winzip\wzzip /m /u /yb /p d:\Sicherung\gezippt\Sicherung_%%d.zip "%%i"  
popd
Grüße
bastla
Member: Zunaras
Zunaras Mar 16, 2009 at 21:03:23 (UTC)
Goto Top
Hi Bastla!

Das ist genial!

Könnte man den Ablauf noch etwas verbessern?
Im Moment wird für jede einzelne Datei das wzzip gestartet. Das heißt, das die Zip, die durchaus die 500 MB schnell erreicht, für jede hinzukommende Datei komplett durchläuft. Pro Sicherungsintervall kommen schon ein paar Dateien zusammen.

Ist der Dateiname "Sicherung_20090316.zip" möglich? Lässt sich besser sortieren.

Grüße
Member: bastla
bastla Mar 16, 2009 at 21:23:13 (UTC)
Goto Top
Hallo Zunaras!

Weiterhin ungetestet:
@echo off & setlocal
set "Quelle=d:\sicherung"  
set "Ziel=d:\Sicherung\gezippt"  

pushd "%Quelle%"  
for /f "delims=" %%i in ('dir /b /a-d') do call :ProcessFile "%%i"  
for /d %%i in (*.*) do call :ProcessDir "%%i"  
popd
goto :eof

:ProcessFile
for /f "tokens=1-3 delims=. " %%a in ("%~t1") do set "Datum=%%c%%b%%a"  
if not exist "%Datum%" md "%Datum%"  
move %1 "%Datum%"  
goto :eof

:ProcessDir
pushd %1
set "Datum=%~nx1"  
:zip
start /wait c:\programme\winzip\wzzip /m /u /yb /p "%Ziel%\Sicherung_%Datum%.zip" *.*  
dir /a-d >nul 2>&1 && goto :zip
popd
REM rd %1
goto :eof
Zunächst werden alle Dateien nach Änderungsdatum in entsprechende Unterordner (Name = Änderungsdatum der Datei im Format JJJJMMTT) verteilt. In der zweiten Schleife werden dann alle Inhalte der Unterordner der entsprechenden Sicherungsdatei hinzugefügt (Vorgang wird wiederholt, bis sich keine Dateien mehr im Unterordner befinden). Um den Unterordner danach zu löschen, das "REM" am Beginn der Zeile 24 entfernen.

Grüße
bastla
Member: Zunaras
Zunaras Mar 16, 2009 at 22:18:59 (UTC)
Goto Top
Meine Güte! (überrascht sein von der Länge des Codes)

Die Aufteilung und das zippen funktioniert super.
Dadurch, das der Ordner "gezippt" sich auch im Verzeichnis Sicherung befindet, will er diesen auch nochmal zippen.
Ist aber nicht weiter schlimm. Ich habe diesen verschoben.

Ich werde es morgen noch mal auf dem Rechner ausprobieren wo es laufen soll.

Ich bedanke mich schon mal für die Geduld und Hilfe für mein Problem und gebe morgen nochmal eine kurze Rückinfo.

Viele Grüße und Gute Nacht
Zunaras
Member: Zunaras
Zunaras Mar 17, 2009 at 07:38:36 (UTC)
Goto Top
Klappt alles wunderbar!

Nochmals vielen Dank!

Grüße