Batchdatei soll überprüfen, ob auf eine Log Datei
Hiho !
Ein Freund und ich haben eine Batchdatei erstellt, leider kommen wir bei einer Sache nicht weiter.
Die Batch soll prüfen, ob in der Logdatei die Barcodes schon eingetragen wurden.
Sie soll nicht älter wie 10 Minuten sein.
Bis jetzt ist es uns nur gelungen das auf den heutigen Tag einzuschränken.
Kleiner Auszug aus der Riesenbatch:
:einzeln
cls
set "pfad=w:\successful"
echo ACHTUNG !!! Logfile nicht vorhanden, bitte warten !
:eins
if exist "%pfad%\%date:~-4%%date:~3,2%%date:~0,2%.txt" & cls & ping -n 2 localhost >nul & echo Logfile ist vorhanden ! & set music_file="c:\temp\log.mp3" & call :sub_music & goto barcode
ping -n 2 localhost >nul
goto eins
Es wäre toll, wenn die Logdatei nur dann gefunden wird, wenn sie nicht älter wie 10 Minuten ist.
Geht das überhaupt ?
Viellen lieben Dank im voraus
Bis danndann
Hopps
Ein Freund und ich haben eine Batchdatei erstellt, leider kommen wir bei einer Sache nicht weiter.
Die Batch soll prüfen, ob in der Logdatei die Barcodes schon eingetragen wurden.
Sie soll nicht älter wie 10 Minuten sein.
Bis jetzt ist es uns nur gelungen das auf den heutigen Tag einzuschränken.
Kleiner Auszug aus der Riesenbatch:
:einzeln
cls
set "pfad=w:\successful"
echo ACHTUNG !!! Logfile nicht vorhanden, bitte warten !
:eins
if exist "%pfad%\%date:~-4%%date:~3,2%%date:~0,2%.txt" & cls & ping -n 2 localhost >nul & echo Logfile ist vorhanden ! & set music_file="c:\temp\log.mp3" & call :sub_music & goto barcode
ping -n 2 localhost >nul
goto eins
Es wäre toll, wenn die Logdatei nur dann gefunden wird, wenn sie nicht älter wie 10 Minuten ist.
Geht das überhaupt ?
Viellen lieben Dank im voraus
Bis danndann
Hopps
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 295890
Url: https://administrator.de/contentid/295890
Ausgedruckt am: 25.11.2024 um 08:11 Uhr
1 Kommentar
@echo off &setlocal
set "fname=C:\reports\VDIReport.CSV"
if not exist "%fname%" echo %fname% nicht gefunden. &goto :eof
set log="C:\Logs\Report_SPUpload.log"
call :GetInternational
rem Get file time:
for /f "delims=" %%i in ("%fname%") do set "ftd=%%~ti"
set "fdate=%ftd:~0,10%"
set "ftime=%ftd:~11%:00,00"
call :GetSecs "%fdate%" "%ftime%" fileSecs
call :GetSecs "%date%" "%time%" curSecs
set /a elapsed="(curSecs-fileSecs)/60"
echo %fname% ist %elapsed% Minuten alt.
if %elapsed% leq 15 copy "%fname%" "Z:\" >>"%log%"
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 "%nn:~2,1%" equ "p" if "%hh%" neq "12" (set "hh=1%hh%" &set /a hh-=88)
if "%nn:~2,1%" equ "a" if "%hh%" equ "12" set "hh=00"
if "%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
Könntest Du damit einmal Versuchen.
Habe dies bei einer schnellen Googlesuche gefunden. Wenn Ihr damit rumspielt könnte es gehen. Ansonsten würde ich Euch die Powershell wärmstens Empfehlen.
Unter diesem Link könntet Ihr da fündig werden. Powershell - Dateien, die älter als 30 Minuten sind