quotee
Goto Top

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

Content-ID: 74317

Url: https://administrator.de/contentid/74317

Ausgedruckt am: 23.11.2024 um 02:11 Uhr

Biber
Biber 23.11.2007 um 17:57:31 Uhr
Goto Top
Moin quotee,

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
[ungetestet]

Grüße
Biber
bastla
bastla 23.11.2007 um 20:43:50 Uhr
Goto Top
Hallo quotee!

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
Für die Sortierung muss das Datum an einer definierten Spaltenposition in der Zeile (am einfachsten auf Position 1 face-wink) stehen. Falls es aber unbedingt die von Dir dargestellte (für mich unübersichtliche) Reihenfolge "Pfad Datum" sein soll, dann:
@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  
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:
MachListe.cmd > D:\Liste.txt

Grüße
bastla
Biber
Biber 26.11.2007 um 08:06:15 Uhr
Goto Top
Moin quotee,

passt einer der Lösungsansätze?
Gibt es offene Fragen oder ist es okay so?
Magst Du ein Feedback geben?

Grüße
Biber
quotee
quotee 26.11.2007 um 19:56:29 Uhr
Goto Top
Hallo zusammen,

vielen vielen Dank für eure Unterstützung!
Wirklich erfreulich, dass einem doch noch geholfen wird!!

THX & Grüße, quotee
Biber
Biber 27.11.2007 um 09:33:01 Uhr
Goto Top
Moin quotee,

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.. face-wink

Grüße und danke für das Feedback
Biber