Befehlszeile zum Abrufen der neuesten Datei mit dem rekursiven Verzeichnisbefehl

Befehlszeile zum Abrufen der neuesten Datei mit dem rekursiven Verzeichnisbefehl

Auf meiner Festplatte werden täglich Hunderte von Unterordnern erstellt, die eine bestimmte Textdatei (Tracker.txt) enthalten können.

Ich möchte eine Befehlszeilen- oder BAT-Datei erstellen, um nur ein Ergebnis zu erhalten, nämlich die neueste Tracker.txt-Datei mit ihrem vollständigen Pfad!

Ich habe es versucht dir /s tracker.txt /OD, aber das Ergebnis ist nicht nach Datum gefiltert.

Danke schön!

Antwort1

DIR /B /S /OD "tracker.txt"Sie können die Befehlsergebnisse an eine temporäre Protokolldatei weiterleiten , diese jedoch mithilfe der FORSchleifenersetzungen den Datums- und Zeitstempel jeder Datei einfügen, der mit dem Namen übereinstimmt, gefolgt von einem Komma und dann dem vollständigen expliziten Pfad und Dateinamen (d. h. YYYY-MM-DD hh:mm [AM/PM]).

Anschließend verwenden Sie den SORTBefehl für diese Datei, um alle Zeilen in dieser Datei in eine neue sortierte Datei zu sortieren, wobei die neueste Zeitstempeldatei jedoch am Ende der Liste steht.

Zuletzt führen Sie eine letzte FORSchleife durch die endgültige Dateiliste aus, wobei Sie das Komma als Trennzeichen verwenden und dann die Iteratorvariable in dieser Schleife nur auf jeden vollständigen expliziten Pfad setzen. Wenn Sie das Ende dieser Liste erreichen, ist dies die neueste Datei, die SETzuletzt kommt, und dann können Sie etwas mit dieser zuletzt gesetzten Variable tun, die hinsichtlich des Datumsstempels die neueste Datei aus allen Verzeichnissen ist, die Sie rekursiv angeben.


Batch-Skriptbeispiel

Stellen Sie sicher, dass der Wert der SET StartDir=Variablen auf den Stammordner festgelegt ist, in dem der DIR-Befehl zum rekursiven Suchen der Dateien startet.

@ECHO ON

SET StartDir=C:\Users\User\Desktop\Test

IF EXIST "%temp%\~dir1temp.dat" DEL /Q /F "%temp%\~dir1temp.dat"
FOR /F "TOKENS=*" %%A IN ('Dir /B /S /OD "%StartDir%\tracker.txt"') DO ECHO %%~TA, %%~FPNXA>>"%temp%\~dir1temp.dat"

IF EXIST "%temp%\~dirsorttemp.dat" DEL /Q /F "%temp%\~dirsorttemp.dat"
SORT "%temp%\~dir1temp.dat">>"%temp%\~dirsorttemp.dat"

FOR /F "TOKENS=2 DELIMS=," %%A IN (%temp%\~dirsorttemp.dat) DO (SET File=%%~A)

ECHO %File%
:::<command to do something with %file%>
PAUSE

Weitere Ressourcen

  • Sortieren
  • Für /F
  • FOR /?(Batch-Substitutionen)

    In addition, substitution of FOR variable references has been enhanced.
    You can now use the following optional syntax:
    
    %~fI        - expands %I to a fully qualified path name
    %~tI        - expands %I to date/time of file
    
  • Satz

verwandte Informationen