Leider gehen insbesondere die Zeitstempel der Verzeichnisse beim Kopieren auf neue Datenträger meist verloren.
Um das zu kompensieren, habe ich eine kleine Funktion geschrieben, die, basierend auf den Zeitstempeln der enthaltenen Dateien, den Zeitstempel eines Verzeichnisses korrigiert. Das betrifft "Änderungszeit" (wann wurde zuletzt im Verzeichnis eine Datei geändert) und "Erstellzeit" (Was ist der früheste Erstellzeitpunkt einer Datei im Verzeichnis).
Die Funktion liegt in meinem Universalskript mit auf der "Dateioperationstaste" (F2), wo auch Umbenennen, Archivieren und ähnliches drauf liegt. Ich schleife sie über größere Verzeichnisstrukturen und kann so für ganze Festplatten im Nu die Zeitstempel aller Verzeichnisse korrigieren.
Programmtechnisch ist das ganze nicht sehr anspruchsvoll, ich sehe das eher als eine Art Anregung, die Zeitstempel mehr zu nutzen.
Viele Grüße, Halweg
Code: Select all
;Zeitstempel der Dateien eines Verzeichnisses auf das Verzeichnis übertragen
zeitstempel_verz(verz)
{
IF (SUBSTR(verz,STRLEN(Verz)) = "\") ; \ am Ende wird nicht aktzeptiert.
RETURN
; 1. Schleife vorbereiten
FILEGETTIME, erstellungsdatum, %verz%,C
aenderungsdatum:=0 ; Vorbelegung Änderungszeit mit 0 (damit der letzte Zeitstempel gefunden wird)
anzahl_durchsucht:=0
anzeige_aller:=1
; 2. Schleife über alle enthaltenen Dateien
LOOP, FILES, %verz%\*.*,FR ; alle Dateien in Verzeichnis und seinen Unterverzeichnissen durchlaufen
{
;2.1 Tooltip aufbauen
Global textbeep_max_length
anzahl_durchsucht +=1
IF (A_INDEX > 1000)
anzeige_aller = 100
ELSE IF (A_INDEX > 100)
anzeige_aller = 10
IF (MOD(A_INDEX,anzeige_aller)=0)
TOOLTIP, Untersuche Dateien in %verz%:%anzahl_durchsucht%,100,20,5
; 2.2 Datums untersuchen
erstellungsdatum:= MIN(A_LOOPFILETIMECREATED,erstellungsdatum) ; Datum der frühesten Erstellung ermitteln
aenderungsdatum:= MAX(A_LOOPFILETIMEMODIFIED,aenderungsdatum) ; Datum der letzten Änderung ermitteln
}
TOOLTIP,,,,5 ; Tooltip schließen
; 3. Abhängig vom Speicherort Änderungs- und Erstell-(Zugriffs-)Datum einstellen
FILESETTIME,%aenderungsdatum%,%verz%,M,2
IF verz CONTAINS i:,k:,l:,\\meinnas ;<==== Hier Erkennung von NAS Netzwerklaufwerken, z. B. mit Ext3-Formastierung (dort Zugriffszeit=Erstellzeit)
FILESETTIME,%erstellungsdatum%,%verz%,A,2
ELSE
FILESETTIME,%erstellungsdatum%,%verz%,C,2
}