burnbaby

Die 10 neuesten Dateien in Ordnerstruktur finden

Hallo zusammen,
wie schon im Titel gesagt, möchte ich in einer Textdatei die 10 neuesten Dateien in einer
Ordnerstruktur eintragen.
Nun habe ich schon die letzten Tage hier im Forum danach gesucht und habe eines gefunden gehabt,
dass in diese Richtung ging, dies habe ich inzwischen etwas abgeändert.
Mir wird nun in einer Datei schon die neuesten 10 Dateien eingetragen,
nur sucht er nur in den ersten Unterordnern nach Dateien.
Das heißt er sucht nicht nach Dateien im Hauptordner und nicht nach Dateien die nach dem ersten Unterordner kommen.
Dies hätte ich aber noch gerne.
Einer einen Vorschlag für mich ?

Gruß
Andreas

@echo off & setlocal
set "StartDir=I:\Engineering"  

set T=DirList.txt
set T2=DirListSort.txt
for /d %%d in ("%StartDir%"\*.*) do (  
    for /f "delims=" %%i in ('dir /b /a-d "%%d\*.*" 2^>nul') do call :ProcessFile "%%d\%%i"  
)
sort /R %T% >> %T2%
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ %T2%') do @(  
        for /L %%a in (1,1,10) do @if %%i==%%a @echo %%i %%j
)
del %T%
del %T2%
pause
goto :eof

:ProcessFile
set D=%~t1
>>%T% echo %D:~6,4%%D:~3,2%%D:~,2%%D:~11,2%%D:~14,2% %1
goto :eof
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 203920

Url: https://administrator.de/forum/die-10-neuesten-dateien-in-ordnerstruktur-finden-203920.html

Ausgedruckt am: 12.05.2025 um 18:05 Uhr

bastla
bastla 25.03.2013 um 14:49:22 Uhr
Goto Top
Hallo BurnBaby und willkommen im Forum!

Ersetze die Zeilen 6 bis 8 durch
for /f "delims=" %%i in ('dir /s/b /a-d "%StartDir%" 2^>nul') do call :ProcessFile "%%i"
- und verwende beim Posten von Batches oder Textbeispielen bitte (geht auch noch nachträglich) "Code"-Formatierung ...

Grüße
bastla
BurnBaby
BurnBaby 26.03.2013 um 09:48:52 Uhr
Goto Top
Hallo bastla,
habe es nun ersetzt, nun bekomme ich aber keine Ausgabe mehr.

@echo off & setlocal
set "StartDir=I:\Engineering"  

set T=DirList.txt
set T2=DirListSort.txt
for /f "delims=" %%i in ('dir /s/b /a-d "%StartDir%" 2^>nul') do call :ProcessFile "%%i"  

sort /R %T% >> %T2%
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ %T2%') do @(  
        for /L %%a in (1,1,10) do @if %%i==%%a @echo %%i %%j
)
del %T%
del %T2%
pause
goto :eof

:ProcessFile
set D=%~t1
>>%T% echo %D:~6,4%%D:~3,2%%D:~,2%%D:~11,2%%D:~14,2% %1
goto :eof
bastla
bastla 26.03.2013 um 11:39:20 Uhr
Goto Top
Hallo BurnBaby!

Kann ich nicht nachvollziehen - funktioniert bei mir mit dem geposteten Code ...

Du könntest mal direkt in der CMD-Shell mit
dir /s/b/a-d I:\Engineering"
prüfen, welche Dateien gefunden werden ...

Ansonsten lass mal die beiden Varianten jeweils mit "echo on" anstatt "echo off" laufen - zur besseren Nachvollziehbarkeit kannst Du (unter der Annahme, dass die Batchdatei "D:\Latest10.cmd" heißt) mit
D:\Latest10.cmd>D:\Latest10_Log.txt
die Ausgabe in eine Datei schicken (auf die Pause in Zeile 14 solltest Du dann besser verzichten).

Grüße
bastla
BurnBaby
BurnBaby 26.03.2013 um 12:03:27 Uhr
Goto Top
Ja ok, es geht, der Ordner war nur um einiges Größer als gedacht.
Danke dir
Endoro
Endoro 27.03.2013, aktualisiert am 28.03.2013 um 01:55:17 Uhr
Goto Top
Hallo BurnBaby, ich weiss, der Thread ist schon "gelöst", aber vielleicht kann ich dich ja mit meinem Fünfzeiler erfreuen:

@echo off &setlocal
set /a count=0, files=0
for /f %%i in ('dir /b /s /a-d') do set /a count+=1  
set /a count-=10
for /f "tokens=2*" %%a in ('^(for /f "delims=" %%i in ^('dir /a-d /b /s'^) do @for /f "tokens=1-4delims=. " %%j in ^("%%~ti"^) do @echo %%l.%%k.%%j %%m "%%~fi"^) ^|sort^|more +%count%^|sort /r') do set /a files+=1& call echo.%%files%% %%~tb %%~fb  

Warum das so funktioniert? Keine Ahnung! face-smile


bb