bernd8183
Goto Top

Wie zählt man mittels batch-file Dateien in Verzeichnissen inkl Unterverzeichnissen die ÄLTER als zb. 6 Monate bzw 180 tage sind

hallo,
erst seit kurzem beschäfzige ich mit batch und stehe jetzt vor der frage wie ich in 200 verzeichnissen und 50000 dateien die files zählen kann, die älter als ein halbes Jahr sind.
Löschen mit delage wie ich es hier oft gelesen habe möchte ich nicht... nur zählen....


vorab danke für die hilfe

hie mal rein Auszug, was ich bisher gemacht hab... funtioniert auch soweit...


set /A filecnt=0
set /A textfilecnt=0
set /A dircnt=0
set /A oldfilescnt=0

for /F %%i in ('dir "c:\seib\quelldat" /B/S /A-d') do set /A filecnt=filecnt+1
for /F %%i in ('dir "c:\seib\quelldat" /B /Ad') do set /A dircnt=dircnt+1
for /f %%i in ('dir "C:\seib\quelldat" /B/S ^2^>nul^|find /C /I ".txt"') do set /a textfilecnt+=%%i

echo %DATE:~-4%%DATE:~-10,2%%DATE:~-7,2%;%TIME%;folder=;%dircnt%;files=;%filecnt%;textfiles=;%textfilecnt%;files älter als XXTage;%%oldfilescnt >>c:\seib\zieldata\output.txt


das Ergebnis ist ein logfile in dem nach jedem batchlauf ein zeile mit Zeitstempel, anzahl allervorhanden files, anzahl aller txt-files erzeugt wird

jetzt soll hier noch zusätzlich die anzahl aller dateien älter 6 Monate ausgegeben werden...

wer kann helfen? face-smile

Content-Key: 179287

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

Printed on: April 25, 2024 at 14:04 o'clock

Member: bastla
bastla Jan 20, 2012 at 19:33:22 (UTC)
Goto Top
Hallo bernd8183 und willkommen im Forum!
wer kann helfen? face-smile
delage face-wink

... hat auch einen Schalter "preview" zu bieten ...

... und ansonsten VBS.
Übrigens könnte
for /F %%i in ('dir "c:\seib\quelldat" /S/W^|findstr "Datei(en)" 2^>nul') do set /A filecnt=%%i
bzw
for /F %%i in ('dir "c:\seib\quelldat" /S/W^|findstr "Verzeichnis(se)," 2^>nul') do set /A dircnt=%%i
und
for /F %%i in ('dir "c:\seib\quelldat\*.txt" /S/W^|findstr "Datei(en)" 2^>nul') do set /A textfilecnt=%%i
nicht nur (wegen der "Code"face-wink besser lesbar, sondern auch performanter sein ...

... und da ich schon mal dabei bin: Ein immer wiederkehrender Bestandteil wie der Pfad "c:\seib\quelldat" schreit nach der Verwendung einer Variablen.

Grüße
bastla
Member: pieh-ejdsch
pieh-ejdsch Jan 21, 2012, updated at Oct 09, 2012 at 18:43:22 (UTC)
Goto Top
moin Bernd,

Robocopy könnte auch eine Alternative dazu sein.
for /f "tokens=1,3" %%i in ('Robocopy /l /s /r:0 /minage:180 D:\In-dem-Ordner-suchen X ^|findstr "Dateien:"') do set /a %%i=%%j  
echo Alte Dateien %Dateien:%

Gruß Phil
Member: bernd8183
bernd8183 Jan 21, 2012 at 17:52:05 (UTC)
Goto Top
Danke... hat geklappt... hab mir delage besorgt und folgendes umgesetzt:


cd C:\seib\skripte
DelAge32.exe C:\seib\quelldat\*.* 1 /preview >c:\seib\zieldata\tmp_count_older_files.txt
cd %zielpfad%
FOR /F "delims=:" %%A IN ('findstr /N .* "tmp_count_older_files.txt"') DO set /A oldfilecnt=%%A

jetzt "spiel" ich noch ein bischen damit und die Performance-optimierungen schau ich mir auch noch an... danke dafür face-smile
Member: bernd8183
bernd8183 Jan 21, 2012 at 17:52:47 (UTC)
Goto Top
danke ... werd ich bei gelegenheit mal einbauen....
Member: bastla
bastla Jan 21, 2012 at 19:04:31 (UTC)
Goto Top
Hallo bernd8183!

Wolltest Du nicht eigentlich 60 Tage und auch die Unterordner berücksichtigen? Eine Temp-Datei sollte auch nicht nötig sein:
for /f "delims=:" %%i in ('delage32 C:\seib\quelldat\*.* 60 /recurse /preview^|findstr /n "."') do set /A oldfilecnt=%%i
Grüße
bastla
Member: bernd8183
bernd8183 Jan 21, 2012 at 22:28:19 (UTC)
Goto Top
auch nicht schlecht ! face-smile aber zum testen war 1 Tag und eine temp-datei für mich ganz gut...


fehlendes /recurse hab ich damit auch noch bemerkt...


danke und gruß