###############################################################################

    SHOWDATE

-------------------------------------------------------------------------------
Anzeige von Datum/ Uhrzeit nach freier Vorgabe des Formats
http://www.axel-hahn.de/axel/page_compi/wp_showdate.htm
-------------------------------------------------------------------------------
History
08.11.2003  ah  erste offizielle Version
28.10.2003  ah  Version 1.2 - Untersttzung der Verschiebung um Stunden und 
                Minuten
###############################################################################

-- Zweck:
Das Tool SHOWDATE wurde geschrieben, um das Datum beliebig formatiert
ausgeben zu knnen.


-- Lizenz:
Showdate ist Freeware. Es kann privat und kommerziell kostenlos eingesetzt
werden. Die Weitergabe ist erwnscht, aber nur samt dieser showdate_readme.txt
gestattet.


-- Syntax:
SHOWDATE.exe [Optionen]

Ausgabe-Optionen:
  /f:<Zeitformat> - String zur Formatierung des Rckgabewertes
  /p:<Prefix> - Statischer Text, der vor dem Ausgabetext ausgegeben wird
  /s:<Suffix> - Statischer Text, der nach dem Ausgabetext ausgegeben wird

Optionen zur Zeitverschiebung:
  /d:<Anzahl Tage>
  /hh:<Anzahl Stunden>
  /mm:<Anzahl Minuten>
  negative Werte ermitteln ein Datum in der Vergangenheit

Ohne Optionen wird das aktuelle Datum im Format dd.mm.yyyy ausgegeben.

-- Beispiel:
Showdate.exe /p:"xcopy /l /d:" /d:-5 /f:mm-dd-yyyy /s:" . c:"

... erzeugt eine Kommandozeile, um mit xcopy alle Dateien lter 5 Tage
anzuzeigen. Beachte, dass xcopy beim Parameter /d [Monat]-[Tag]-[Jahr]
erwartet.


-- Formatierungen:  
Specifier  Displays

c          Displays the date using the format given by the ShortDateFormat 
           global variable, followed by the time using the format given by the 
           LongTimeFormat global variable. The time is not displayed if 
           the date-time value indicates midnight precisely.
d          Displays the day as a number without a leading zero (1-31).
dd         Displays the day as a number with a leading zero (01-31).
ddd        Displays the day as an abbreviation (Sun-Sat) using the strings 
           given by the ShortDayNames global variable.
dddd       Displays the day as a full name (Sunday-Saturday) using the strings 
           given by the LongDayNames global variable.
ddddd      Displays the date using the format given by the ShortDateFormat 
           global variable.
dddddd     Displays the date using the format given by the LongDateFormat 
           global variable.
e          Displays the year in the current period/era as a number without a 
           leading zero (Japanese, Korean and Taiwanese locales only).
ee         Displays the year in the current period/era as a number with a 
           leading zero (Japanese, Korean and Taiwanese locales only).
g          Displays the period/era as an abbreviation (Japanese and Taiwanese 
           locales only).
gg         Displays the period/era as a full name. (Japanese and Taiwanese 
           locales only).
m          Displays the month as a number without a leading zero (1-12). If the
           m specifier immediately follows an h or hh specifier, the minute 
           rather than the month is displayed.
mm         Displays the month as a number with a leading zero (01-12). If the 
           mm specifier immediately follows an h or hh specifier, the minute 
           rather than the month is displayed.
mmm        Displays the month as an abbreviation (Jan-Dec) using the strings 
           given by the ShortMonthNames global variable.
mmmm       Displays the month as a full name (January-December) using the 
           strings given by the LongMonthNames global variable.
yy         Displays the year as a two-digit number (00-99).
yyyy       Displays the year as a four-digit number (0000-9999).
h          Displays the hour without a leading zero (0-23).
hh         Displays the hour with a leading zero (00-23).
n          Displays the minute without a leading zero (0-59).
nn         Displays the minute with a leading zero (00-59).
s          Displays the second without a leading zero (0-59).
ss         Displays the second with a leading zero (00-59).
z          Displays the millisecond without a leading zero (0-999).
zzz        Displays the millisecond with a leading zero (000-999).
t          Displays the time using the format given by the ShortTimeFormat 
           global variable.
tt         Displays the time using the format given by the LongTimeFormat 
           global variable.
am/pm      Uses the 12-hour clock for the preceding h or hh specifier, and 
           displays 'am' for any hour before noon, and 'pm' for any hour after 
           noon. The am/pm specifier can use lower, upper, or mixed case, and 
           the result is displayed accordingly.
a/p        Uses the 12-hour clock for the preceding h or hh specifier, and 
           displays 'a' for any hour before noon, and 'p' for any hour after 
           noon. The a/p specifier can use lower, upper, or mixed case, and the
           result is displayed accordingly.
ampm       Uses the 12-hour clock for the preceding h or hh specifier, and 
           displays the contents of the TimeAMString global variable for any 
           hour before noon, and the contents of the TimePMString global 
           variable for any hour after noon.
/          Displays the date separator character given by the DateSeparator 
           global variable.
:          Displays the time separator character given by the TimeSeparator 
           global variable.
'xx'/"xx"  Characters enclosed in single or double quotes are displayed as-is, 
           and do not affect formatting.


-- Anwendungsmglichkeiten

(1) Logfiles schreiben:
Meldungstexte lassen sich in Logfiles mit Datumsangabe versehen:

    --- Auszug aus Log-Datei: ---------------------------------------------
    2003-11-08 10:50:03 - Skript .... gestartet
    2003-11-08 10:50:04 - starte
    -----------------------------------------------------------------------

... und so kann es gemacht werden:

    --- Auszug aus Bat-Datei: ---------------------------------------------

    set df=yyyy-mm-dd hh:mm:ss
    set logfile="c:\meinlogfile.log"
    showdate /f:"%df%" /s:" - Skript $0 gestartet" >>%logfile%

    -----------------------------------------------------------------------

(2) Backup:
Man kann monatliche Backups in Dateien anlegen, die den Zeitstempel mit
Jahr und Monat beinhalten. Ein Kompressiossionstool, das mit Parametern
umgehen kann. Die Kommandozeilentools von ACE und RAR knnen dies.
Ich habe hier als Beispiel Zip 2.1.

So sichert man z.B. den Ordner "C:\webseite\" in ein Monatsarchiv
"D:\meinbackup_200311.zip":

    --- Auszug aus Bat-Datei: ---------------------------------------------

    set tmpbat="%temp%\~tmpbat.bat"
    showdate /f:"yyyy_mm" /p:"set TargetFile=D:\meinbackup_"> %tmpbat%
    call %tmpbat%
    del %tmpbat%
    set TargetFile=%TargetFile%.zip

    zip -u -r %TargetFile% "C:\webseite\"

    -----------------------------------------------------------------------

(3) Backup von Logfiles:
Tools, die Logfiles schreiben, legen die Logfiles hufig mit einem
Zeitstempel ab. Der IIS z.B. in der Form ex031108.log (fr den 8. November
2003).
Mit Hilfe des Parameters /d von showdate kann man ein Datum eines anderen
Tages ausgeben lassen. Bei einem negativen Wert werden tage zurckgezhlt.

So archiviert man ein 45 Tage altes Logfile d:\weblogs\ex[Zeitstempel].log
nach d:\weblogs\archiv_[Jahr_Monat].zip:

    --- Auszug aus Bat-Datei: ---------------------------------------------

    set tmpbat="%temp%\~tmpbat.bat"
    showdate /f:"yymmdd"  /d:-45 /p:"set SourceFile=ex" /s:".log" > %tmpbat%
    showdate /f:"yyyy_mm" /d:-45 /p:"set TargetFile=archiv_" /s:".zip" >> %tmpbat%
    call %tmpbat%
    del %tmpbat%

    d:
    cd weblogs
    zip -m -9 %TargetFile% %SourceFile%

    -----------------------------------------------------------------------

Anm.:
zip -m verschiebt das File ins Zip-Archiv; -9 ist die Kompressionsrate.


-------------------------------------------------------------------------------
EOF
