Andreas Cloos: aktuelles Datum in einem Batch verarbeiten

Hallo Zusammen,

zur automat. Datensicherung unter Win2000 habe ich eine Batchdatei geschrieben, die einen kompletten Ordner zippt und das Zip-File auf einen anderen Rechner kopiert. Die Batchdatei wird einmal am Tag automat. ausgeführt.

Das ganze sieht im Moment so aus:

"c:\program files\winzip\wzzip" demo.zip c:\www\demo -P -r
copy c:\dump\demo.zip E:\www_dump

Fieserweise werden die alte und die neue Datei aber zusammenkopiert und nicht die alte durch die neue ersetzt, so daß ich dann zB immer noch Dateien drin habe, die ich schon gelöscht hatte.

Am liebsten wäre mir, wenn ich an den Namen des Zip-Files das Datum dranhängen könnte, so daß ich jeden Tag eine neue Sicherungskopie habe, die ich dann auch noch auseinanderhalten könnte (dann kann man auch mal zurücksichern auf den Stand von vor zwei Tagen oder so...).

Leider habe ich auch bei intensiver Nutzung von Google et al nichts gefunden, was mir weitergeholfen hat - wer kann mir sagen wie es geht?

--
Greetz,
Andreas

  1. Hallo Andreas.

    Es gibt sicherlich verschiedene Möglichkeiten, dass zu machen.
    Eine davon wäre, beim Aufruf der Batch-Datei das aktuelle Datum mit anzugeben, also "backup.bat 2002-10-15"
    Dein Batch würde dann folgendes machen:
    c:\program files\winzip\wzzip" demo_%1.zip c:\www\demo -P -r
    copy c:\dump\demo_%1.zip E:\www_dump

    %1 entspricht hierbei dem ersten übergebenen Argument.

    Hope, that helps.
    Grüße
    Sascha

    1. Hi Sascha,

      Eine davon wäre, beim Aufruf der Batch-Datei das aktuelle Datum mit anzugeben, also "backup.bat 2002-10-15"

      Und wie mache ich das automatisiert? Also über den MS-Scheduler? Da habe ich eine entsprechende Einstellung nicht finden können.

      --
      Greetz,
      Andreas

      1. Hi Andreas.

        Den MS-Scheduler kenne ich auch nicht (meinst du AT oder geplante Tasks oder ist das kein Bordmittel, von dem du sprichst?!).

        Wie dem auch sei, es gibt eine andere Lösung:
        @echo off
        for /f "tokens=1-4 delims=. " %%a in ('date /t') do (set weekday=%%a& set day=%%b& set month=%%c& set year=%%d)
        c:\program files\winzip\wzzip" demo_%year%-%month%-%day%.zip c:\www\demo -P -r
        copy c:\dump\demo_%year%-%month%-%day%.zip E:\www_dump

        Die erste Zeile durchsucht das aktuelle Datum nach "delims" und packt die einzelnen Werte ins Environment. Für das deutsche Datum klappt es mit ".", bei US-Datum halt / als delims
        Die Environment-Variablen lassen sich mit %varname% auslesen.

        ich habs mit mkdir data_%year%-%month%-%day% probiert und es funktioniert hervorragend. Sonst kannst du ja noch %weekday% dazusetzen.

        Unter dem Link findest du noch andere Hints zu Batch-Programming, untetr anderem auch, wie du die Zeit auf die gleiche Weise setzen kannst, falls das interessant ist.

        http://www.ericphelps.com/batch/

        Grüße
        Sascha