Showdate
EinleitungSyntax
Anforderungen
Download
Beispiele
Einleitung
Das Tool SHOWDATE wurde geschrieben, um das Datum beliebig formatiert ausgeben zu können, z.B. Tag-Monat-Jahr oder aber auch Jahr (zweistellig)-Monat-Tag. Weiterhin kann das zurückgelieferte Datum um eine Anzahl Tage, Stunden und Minuten verschoben werden.Diese Funktionalität hatte ich in einer Bat-Datei gebraucht, als ich Logfiles, die einen Zeitstempel im Namen enthielten, archivieren wollte. Es wurde täglich ein Task aufgerufen, der das Logfile von vor 45 Tagen griff und in ein Zip-Archiv logs_[Jahr]_[Monat] verschoben hat.
s. Beispiele
Seitenanfang
Syntax
SHOWDATE.exe [Optionen] Ausgabe-Optionen: /f:Zeitformat - String zur Formatierung des Rückgabewertes /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.
Beim Formatierungsstring des Parameters /f können folgende Zeichen verwendet werden (Copy & Paste aus der Borland-Hilfe ... Sie finden diese Auflistung auch noch einmal in der beiliegenden Readme):
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.
Seitenanfang
Anforderungen
SHOWDATE ist ein Kommandozeilen-programm und läuft nur unter Windows (nicht unter DOS).- mind. Windows 4.X (Windows 95/ 98/ NT)
Trotz ausführlicher Tests der Software übernimmt der Autor keinerlei Haftung für entstandene Schäden durch die Verwendung dieser Software. Der Autor kann desweiteren keine Garantie dafür übernehmen, dass die Anwendung auf allen Systemen gleichermassen zuverlässig funktioniert. Die Verwendung des Programmes erfolgt ausschliesslich auf eigene Gefahr!
Seitenanfang
Download:
showdate.zip (30 kB)In der Download-Datei sind enthalten:
- eine ausführbare Datei: SHOWDATE.EXE
- eine README
Seitenanfang
Beispiele
Der Aufruf von Showdate ist nicht sonderlich spektakulär - eher langweilig ;-)Daher ein paar Beispiele, was sich damit anfangen lässt:
Ausgabe des aktuellen Datums:
showdate /f:"dd.mm.yyyy"
Ausgabe des aktuellen Datums + Uhrzeit:
showdate /f:"dd.mm.yyyy - hh:mm:ss"
aktuelles Datum mit Monat-Tag-Jahr 2-stelig und Uhrzeit im 12h-Format:
showdate /f:"mm-dd-yy hh:mm am/pm"
Wochentag von gestern:
showdate /f:"dddd" /d:-1
Logfiles schreiben
Meldungstexte lassen sich in Logfiles mit Datumsangabe versehen:
2003-11-08 10:50:03 - Skript .... gestartet
2003-11-08 10:50:04 - starteAuszug aus Log-Datei
... und so kann es gemacht werden:
set df=yyyy-mm-dd hh:mm:ss
set logfile="c:\meinlogfile.log"
showdate /f:"%df%" /s:" - Skript %0 gestartet" >>%logfile%Auszug aus Bat-Datei
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 können 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":
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\"Auszug aus Bat-Datei
Backup von Logfiles:
Tools, die Logfiles schreiben, legen die Logfiles häufig mit einem Zeitstempel ab. Der IIS z.B. in der Form ex031108.log (für 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 zurückgezählt.
So archiviert man ein 45 Tage altes Logfile d:\weblogs\ex[Zeitstempel].log nach d:\weblogs\archiv_[Jahr_Monat].zip:
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%Auszug aus Bat-Datei
Anm.:
zip -m verschiebt das File ins Zip-Archiv (man könnte %SourceFile% auch nachträglich löschen); -9 ist die Kompressionsrate.
Seitenanfang