spezielle Directories mit last modified auflisten
Hallo zusammen,
ich versuche mir aus einem Verzeichnis alle enthaltenen Unter-Verzeichnisse mit der Endung "_EXT" auflisten zu lassen.
Nun hätte ich noch gerne die Information "last modified" angezeigt bekommen.
Folgenden Code habe ich:
FOR /D %%A in (D:\Backup\*_EXT) do echo %%A
Als Ausgabe erhalte ich dann:
D:\BACKUP\123_EXT
D:\BACKUP\1234_EXT
Was muss ich dem Code hinzufügen, damit ich die folgende Ausgabe bekomme?
D:\BACKUP\123_EXT 2007\11\09
D:\BACKUP\1234_EXT 2007\11\07
Am besten wäre es wenn man die Ausgabe auch noch nach Datum sortieren könnte.
Vielen Dank für eure Mühe ...
Grüße, quotee
ich versuche mir aus einem Verzeichnis alle enthaltenen Unter-Verzeichnisse mit der Endung "_EXT" auflisten zu lassen.
Nun hätte ich noch gerne die Information "last modified" angezeigt bekommen.
Folgenden Code habe ich:
FOR /D %%A in (D:\Backup\*_EXT) do echo %%A
Als Ausgabe erhalte ich dann:
D:\BACKUP\123_EXT
D:\BACKUP\1234_EXT
Was muss ich dem Code hinzufügen, damit ich die folgende Ausgabe bekomme?
D:\BACKUP\123_EXT 2007\11\09
D:\BACKUP\1234_EXT 2007\11\07
Am besten wäre es wenn man die Ausgabe auch noch nach Datum sortieren könnte.
Vielen Dank für eure Mühe ...
Grüße, quotee
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 74317
Url: https://administrator.de/contentid/74317
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
5 Kommentare
Neuester Kommentar
Moin quotee,
das Änderungsdatum/letzten schreibenden Zugriff bekommst Du mit dem " %~t"-Parameter.
Also im ersten Schritt:
Das würde eine Liste mit dem Datum (Datumsformat gemäß Computereinstellungen) gefolgt von Pfad/Dateinamen bringen.
Also z.B. (bei einem Test an meinem CMD-Prompt) so etwas:
Da es sich so NICHT nach Datum sortieren lässt, wäre eine mögliche Strategie, das Datum in ein ANSI-Datum (YYYYMMTT) umzuwandeln. Oder in das US-Format (YYYY/MM/TT).
Wenn Du das Datum wie oben beschrieben vorliegen hast, dann kannst Du die ganze FOR /D-Ausgabe in eine Datei "%temp%\whatever.xyz" umleiten und danach mit SORT ausgeben.
[ungetestet]
Grüße
Biber
das Änderungsdatum/letzten schreibenden Zugriff bekommst Du mit dem " %~t"-Parameter.
Also im ersten Schritt:
...
FOR /D %%A in (D:\Backup\*_EXT) do echo %%~tA [%%A]
Das würde eine Liste mit dem Datum (Datumsformat gemäß Computereinstellungen) gefolgt von Pfad/Dateinamen bringen.
Also z.B. (bei einem Test an meinem CMD-Prompt) so etwas:
...
08.03.2006 09:53 [template]
28.09.2006 19:16 [templogs]
06.11.2007 18:24 [test]
13.02.2007 19:43 [test22]
...
Da es sich so NICHT nach Datum sortieren lässt, wäre eine mögliche Strategie, das Datum in ein ANSI-Datum (YYYYMMTT) umzuwandeln. Oder in das US-Format (YYYY/MM/TT).
Wenn Du das Datum wie oben beschrieben vorliegen hast, dann kannst Du die ganze FOR /D-Ausgabe in eine Datei "%temp%\whatever.xyz" umleiten und danach mit SORT ausgeben.
...
echo.>%temp%\whatever.xyz
FOR /D %%A in (D:\Backup\*_EXT) do echo %%~tA %%A>>%temp%\whatever.xyz
Sort %temp%\whatever.xyz
Grüße
Biber
Hallo quotee!
Mit der von Dir gewünschten Datumsformatierung würde Biber's Vorschlag etwa so aussehen:
Für die Sortierung muss das Datum an einer definierten Spaltenposition in der Zeile (am einfachsten auf Position 1 ) stehen. Falls es aber unbedingt die von Dir dargestellte (für mich unübersichtliche) Reihenfolge "Pfad Datum" sein soll, dann:
Wenn Du als Trennzeichen zwischen %%A und dem dahinter nochmals angeführten Datum einen Tab setzt (wie bei der oben dargestellten Variante), wird's etwas ansehnlicher, und Du könntest die Liste auch leichter in zB Excel importieren.
Um dazu die Ausgabe in eine Datei zu erhalten, den Batch einfach so aufrufen:
Grüße
bastla
Mit der von Dir gewünschten Datumsformatierung würde Biber's Vorschlag etwa so aussehen:
@echo off & setlocal
echo.>%temp%\whatever.xyz
for /d %%A in (D:\Backup\*_EXT) do for /f "tokens=1,2,3 delims=. " %%I in ('echo %%~tA') do echo %%K\%%J\%%I %%A >>%temp%\whatever.xyz
sort %temp%\whatever.xyz
@echo off & setlocal
echo.>%temp%\whatever.xyz
for /d %%A in (D:\Backup\*_EXT) do for /f "tokens=1,2,3 delims=. " %%I in ('echo %%~tA') do echo %%K\%%J\%%I %%A %%K\%%J\%%I >>%temp%\whatever.xyz
for /f "tokens=1*" %%i in ('sort %temp%\whatever.xyz') do echo %%j
Um dazu die Ausgabe in eine Datei zu erhalten, den Batch einfach so aufrufen:
MachListe.cmd > D:\Liste.txt
Grüße
bastla
Moin quotee,
A propos: wenn noch mehr BeitragserstellerInnen sich von allein zurückmeldeten oder sogar ihren Beitrag auf "Gelöst" setzten, wäre das eine Hilfe für die ModeratorInnen..
Grüße und danke für das Feedback
Biber
Wirklich erfreulich, dass einem doch noch geholfen wird!!
Ist doch selbstverständlich...A propos: wenn noch mehr BeitragserstellerInnen sich von allein zurückmeldeten oder sogar ihren Beitrag auf "Gelöst" setzten, wäre das eine Hilfe für die ModeratorInnen..
Grüße und danke für das Feedback
Biber