Windows Shell-Befehl zum Anzeigen des Dateinamens und der letzten Zugriffszeit

8

Ich versuche, einen Windows-Befehl zu schreiben, um Dateien und ihre letzten Zugriffszeiten nach Zugriffszeit sortiert aufzulisten.

Ich habe

verwendet %Vor%

Dies gibt die Dateien in Verzeichnis und Unterverzeichnissen in der Reihenfolge ihrer letzten Zugriffszeit aus; aber ich brauche es auch, um die letzte Zugriffszeit auszugeben. Wie wird das erreicht?

    
michael_clarke 30.07.2012, 20:33
quelle

1 Antwort

9

aus einer Batch-Datei heraus:

%Vor%

Es gibt jedoch einige Dinge, auf die Sie achten sollten:

  • Die Dateien sind nach Zugriffszeitstempel in einem Verzeichnis sortiert. Es wird nicht nach Zugriffszeitstempel für alle Verzeichnisse sortiert. Ihr ursprünglicher Code hat das gleiche Problem. Um Verzeichnisse zu sortieren, muss der Zugriffszeitstempel analysiert und in eine Zeichenfolge umgewandelt werden, die bei Sortierung über SORT chronologisch sortiert wird. Etwas wie "JJJJ-MM-TT hh24: mm". Auch das ist nicht besonders gut, weil Sie keinen Zugriff auf die Sekunden haben. Sie können WMIC DATAFILE verwenden, um Dateinamen mit Zeitstempeln für den letzten Zugriff auf einer Subsekundenebene aufzulisten. Aber warum, wenn man bedenkt, dass ...

  • Der von Windows verwaltete Zeitstempel für den letzten Zugriff ist nicht zuverlässig ! Es gibt viele Situationen, in denen eine Anwendung eine Datei lesen kann und der Zeitstempel für den letzten Zugriff nicht aktualisiert wird. Ich habe irgendwo ein Referenzmaterial gesehen, das darüber spricht, aber ich kann mich nicht erinnern, wo.

Wenn Sie immer noch glauben, dass Sie eine Liste von Dateien erhalten möchten, die nach dem Zeitstempel des letzten Zugriffs für eine gesamte Ordnerhierarchie sortiert sind, dann funktioniert Folgendes. Angenommen, Sie möchten alle Dateien unter "c: \ test \"

auflisten %Vor%

Der Zeitstempel hat das Format YYYYMMDDhhmmssddddddZZZZ wo

  • YYYY = Jahr
  • MM = Monat
  • DD = Tag
  • hh = Stunde (24-Stunden-Format)
  • mm = Minuten
  • ss = Sekunden
  • dddddd = Mikrosekunden
  • ZZZZ = Zeitzone, ausgedrückt als Minuten Differenz von GMT (das erste Zeichen ist das Zeichen)


BEARBEITEN

Die Platzhaltersuche in WMIC verursacht eine schreckliche Leistung. Hier ist eine Version, die alle Ordner in der Stammhierarchie durchläuft und WMIC für jeden spezifischen Ordner ausführt (kein Platzhalter). Es hat anständige Leistung.

%Vor%     
dbenham 30.07.2012, 22:03
quelle

Tags und Links