Ältere Dateien aus Verzeichnis protokolieren
Hallo zusammen,
Ich bräuchte eure Hilfe für eine Batch/Script.
Es ist so, dass automatisiert Textdateien in einen Ordner laufen und nach kurzer Zeit von einem anderen Programm eingelesen werden und aus dem Ordner somit gelöscht werden. Es kommt manchmal dazu, dass diese Dateien einen Fehler enthalten und manuell eingelesen werden müssen.
Gibt es eine Möglichkeit diesen Ordner zu durchsuchen sodass mit alle Dateien die älter als 30 Minuten sind in einer Logdatei gespeichert werden bzw. besser wäre es noch direkt die Log Datei per Mail zu versenden.
Ich habe mir gedacht, dass es eventuell mit einer von den folgenden Vorgehensweisen möglich sein muss dies zu realisieren, allerdings will es mir nicht gelingen.
Möglichkeit 1:
Mit dem Befehl "fc vorher.txt nachher.txt >Compare.txt" vergleicht er mir die beiden Log-Dateien zwar, zeigt es mir aber so an, dass es unbrauchbar ist...
Möglichkeit 2:
Es wird der Zeitstempel der Datei (Erstelldatum) ausgelesen und mit einer vorher gespeicherten Zeit in einer variablen verglichen.
Ich weiß leider nicht wie ich das umsetzen kann.
Es wäre schön, wenn mir jemand hierbei helfen kann. Gibt es eventuell sogar fertige Programme um seine Ordner in dieser Hinsicht zu überprüfen?
Viele Grüße und danke im voraus für eure Hilfe oder Anregung!
JT
Ich bräuchte eure Hilfe für eine Batch/Script.
Es ist so, dass automatisiert Textdateien in einen Ordner laufen und nach kurzer Zeit von einem anderen Programm eingelesen werden und aus dem Ordner somit gelöscht werden. Es kommt manchmal dazu, dass diese Dateien einen Fehler enthalten und manuell eingelesen werden müssen.
Gibt es eine Möglichkeit diesen Ordner zu durchsuchen sodass mit alle Dateien die älter als 30 Minuten sind in einer Logdatei gespeichert werden bzw. besser wäre es noch direkt die Log Datei per Mail zu versenden.
Ich habe mir gedacht, dass es eventuell mit einer von den folgenden Vorgehensweisen möglich sein muss dies zu realisieren, allerdings will es mir nicht gelingen.
Möglichkeit 1:
Mit dem Befehl "Dir >vorher.txt" die jetzigen Dateien in einer Textdatei zu speichern.
ping localhost -n 3000 um zu warten bis die Dateien normalerweise abgearbeitet sein müsste.
Jetzt wieder "Dir >nachher.txt" um den nachher Stand zu protokollieren.
ping localhost -n 3000 um zu warten bis die Dateien normalerweise abgearbeitet sein müsste.
Jetzt wieder "Dir >nachher.txt" um den nachher Stand zu protokollieren.
Mit dem Befehl "fc vorher.txt nachher.txt >Compare.txt" vergleicht er mir die beiden Log-Dateien zwar, zeigt es mir aber so an, dass es unbrauchbar ist...
Möglichkeit 2:
Es wird der Zeitstempel der Datei (Erstelldatum) ausgelesen und mit einer vorher gespeicherten Zeit in einer variablen verglichen.
Ich weiß leider nicht wie ich das umsetzen kann.
Es wäre schön, wenn mir jemand hierbei helfen kann. Gibt es eventuell sogar fertige Programme um seine Ordner in dieser Hinsicht zu überprüfen?
Viele Grüße und danke im voraus für eure Hilfe oder Anregung!
JT
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 206287
Url: https://administrator.de/contentid/206287
Ausgedruckt am: 22.11.2024 um 00:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo JT-131!
Zu der Thematik gibt es einige Threads - etwa Datum - Uhrzeit einer Datei liegt x Zeit zurück ...
Was das Versenden per Mail angeht ist Dein Stichwort zB "blat" (siehe etwa auch im zweiten verlinkten Beitrag)
Grüße
bastla
Zu der Thematik gibt es einige Threads - etwa Datum - Uhrzeit einer Datei liegt x Zeit zurück ...
Was das Versenden per Mail angeht ist Dein Stichwort zB "blat" (siehe etwa auch im zweiten verlinkten Beitrag)
Grüße
bastla
Hallo JT-131,
dieses Script spuckt dir die Minuten seit Erstellung für alle Files im aktuellen Ordner aus:
Gruss!
dieses Script spuckt dir die Minuten seit Erstellung für alle Files im aktuellen Ordner aus:
@echo off &setlocal
set "fname="
set "ftd="
call:GetInternational
for /f "tokens=1-3*" %%a in ('dir /a-d /tc ^| findstr /b [0-9]') do set "ftd=%%a %%b"&set "fname=%%d"&call:process
goto:eof
:process
rem Get file time:
set "fdate=%ftd:~0,10%"
set "ftime=%ftd:~11%%sTime%00%sDecimal%00"
call :GetSecs "%fdate%" "%ftime%" fileSecs
call :GetSecs "%date%" "%time%" curSecs
set /a elapsed="(curSecs-fileSecs)/60"
echo %fname% ist %elapsed% Minuten alt.
goto :eof
:GetInternational
:: Sets a bundle of variables by reading the registry settings
for /f "tokens=1,2*" %%a in ('reg query "HKCU\Control Panel\International"') do set "%%a=%%c"
goto :eof
:GetSecs "dateIn" "timeIn" secondsOut
:: Output: Seconds elapsed since 1th Jan. 1970 00:00:00
setlocal
set "dateIn=%~1"
for /f "tokens=2" %%i in ("%dateIn%") do set "dateIn=%%i"
for /f "tokens=1-3 delims=%sDate%" %%a in ("%dateIn%") do (
if %iDate%==0 set /a mm=100%%a%%100,dd=100%%b%%100,yy=10000%%c%%10000
if %iDate%==1 set /a dd=100%%a%%100,mm=100%%b%%100,yy=10000%%c%%10000
if %iDate%==2 set /a yy=10000%%a%%10000,mm=100%%b%%100,dd=100%%c%%100
)
for /f "tokens=1-3 delims=%sTime%%sDecimal% " %%a in ("%~2") do (
set "hh=%%a"
set "nn=%%b"
set "ss=%%c"
)
if 1%hh% lss 20 set hh=0%hh%
if /i "%nn:~2,1%" equ "p" if "%hh%" neq "12" (set "hh=1%hh%" &set /a hh-=88)
if /i "%nn:~2,1%" equ "a" if "%hh%" equ "12" set "hh=00"
if /i "%nn:~2,1%" geq "a" set "nn=%nn:~0,2%"
set /a hh=100%hh%%%100,nn=100%nn%%%100,ss=100%ss%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2,j=j/5+dd+y*365+y/4-y/100+y/400-2472633,j=j*86400+hh*3600+nn*60+ss
endlocal &set "%~3=%j%"
goto :eof
endlocal
Gruss!