hoppala
Goto Top

Batchdatei soll überprüfen, ob auf eine Log Datei

Hiho face-smile !

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 face-smile

Bis danndann
Hopps

Content-Key: 295890

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

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

Member: Althalus
Althalus Feb 11, 2016 at 12:07:08 (UTC)
Goto Top
@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