Datum und Uhrzeit von Dateien ändern

Professionelle Programmierer, die fortlaufend neue Versionen ihrer Produkte kreieren, wollen ein Utility nicht missen, das in der Unix-Welt zum Standard zählt, unter DOS jedoch nur bei einigen wenigen Compilern zum Lieferumfang gehört: TOUCH. Das Kommando setzt das Datum und die Uhrzeit des letzten Schreibzugriffs von beliebigen Dateien auf die aktuelle Systemzeit, was vor allem dann wichtig ist, wenn eigentlich unveränderte Programme neu compiliert werden müssen. Der Entwicklungsumgebung wird eine Änderung vorgegaukelt – ein sogenanntes »Make«-Utility kann in Aktion treten.

TOUCH.BAT tätigt ohne besondere Hilfsmittel diese Zugriffsänderung. Der Stapeljob verknüpft die Dateien, die der Spezifikation im übergebenen Parameter entsprechen, im Binärformat per »COPY + « mit der Nulleinheit NUL, also einer Leerdatei, und kopiert sie wieder auf sich selbst zurück. Die Kombination des COPY-Befehls mit dem Pluszeichen ändert nämlich im Gegensatz zu allen anderen COPY-Varianten das Datum und die Uhrzeit einer Datei.

Name: TOUCH.BAT
Funktion: Setzt Datum und Uhrzeit einer Datei auf die aktuelle Systemzeit.
Übersetzung: ./.
Anwendung: TOUCH Datei (Wildcards erlaubt)
Einschränkungen: TOUCH verwendet die Systemzeit des PCs, die entsprechend aktualisiert sein muß.
@ECHO OFF
FOR %%X IN (%1) DO COPY %%X /B + NUL /A %%X /B >NUL

Wenn Sie – wie unter Profis üblich – z.B. die Uhrzeit einer Datei als Hinweis auf die Programmversion verwenden wollen, hilft FILETIME.DEB weiter. Das Programm setzt im Unterschied zu TOUCH.DEB das Datum und die Uhrzeit einer Datei auf einen durch Sie bestimmten Wert. Obwohl sich das gleiche zwar über einen kleinen Umweg auch mit den DOS-internen TIME- und DATE-Befehlen und mit TOUCH realisieren ließe, wollen wir Ihnen diese Alternative nicht vorenthalten – zumal sich die Uhrzeit mit TIME aufgrund der Laufzeit von TOUCH.BAT nicht exakt einstellen lassen würde. FILETIME.DEB wertet die für ein kurzes DEBUG-Listing »unzähligen« Parameter aus und ändert Zugriffszeit und Zugriffsdatum der angegebenen Datei via DOS-Funktion auf die gewünschten Werte. Tritt ein Fehler auf, bricht das Programm mit einer kurzen Fehlermeldung ab. Achten Sie bei der Eingabe der Parameter unbedingt darauf, daß Sie kein Leerzeichen zuviel eingeben und keine Parameter vergessen. Was Sie als Trennzeichen zwischen den Werten verwenden, bleibt Ihnen überlassen – Ziffern sollten Sie natürlich vermeiden.

Und noch ein Tip: Wenn Sie die Uhrzeit auf 0:00 Uhr setzen, verschwindet im Inhaltsverzeichnis das Uhrzeitfeld komplett. Für Mitternacht müssen Sie deshalb 24:00 verwenden. Ebenso verschwinden das Datumsfeld und (!) die Uhrzeit, wenn Sie das Datumsfeld auf den Wert Null setzen– aufgrund des internen Datumsformates von DOS entspricht dieser Fall dem 1.1.80.

Name: FILETIME.DEB
Funktion: Setzt Datum und Uhrzeit einer Datei auf einen beliebigen Wert.
Übersetzung: DEBUG <FILETIME.DEB
Prüfsumme: 7264
Anwendung: FILETIME Datei t.m.j/s:mit = Tag (0…31) m = Monat (0…12) j = Jahr (ohne Jahrtausend: 80..99) s = Stunde (0..24) mi = Minute (0..59)

z. B. FILETIME \COMMAND.COM 9.9.99/3:30

Einschränkungen: Die Parameter müssen genau in dieser Reihenfolge vollständig eingegeben werden.
A
MOV SI,82           ;100
MOV DX,SI           ;103
CLD                 ;105
LODSB               ;106
CMP AL,20           ;107
JNZ 106             ;109
MOV By[SI-1],0      ;10B
MOV AX,3D00         ;10F
CALL 142            ;112
MOV BX,AX           ;115
MOV CL,8            ;117
CALL 14F            ;119
MOV DX,AX           ;11C
MOV CL,D            ;11E
CALL 14F            ;120
OR DX,AX            ;123
MOV CL,1            ;125
CALL 14F            ;127
SUB AH,A0           ;12A
OR DX,AX            ;12D
MOV CL,3            ;12F
CALL 14F            ;131
MOV DI,AX           ;134
MOV CL,D            ;136
CALL 14F            ;138
MOV CX,AX           ;13B
OR CX,DI            ;13D
MOV AX,5701         ;13F
INT 21              ;142
JNB 162             ;144
MOV DX,163          ;146
MOV AH,9            ;149
INT 21              ;14B
INT 20              ;14D
XOR AX,AX           ;14F
AAD                 ;151
MOV AH,AL           ;153
LODSB               ;155
CMP AL,39           ;156
JA 15E              ;158
SUB AL,30           ;15A
JNB 151             ;15C
MOV AL,0            ;15E
ROL AX,CL           ;160
RET                 ;162
DB "Error$"

RCX
69
NFILETIME.COM
W
Q

Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot

Matomo