Datum - Uhrzeit einer Datei liegt x Zeit zurück
Hallo
Ich möchte ein Script erstellen, was alle 10 Minuten nachschaut, ob eine Datei in einem Ordner ist, die älter als XX Minuten schon im Ordner ist.
Quasi eine eMail-Benachrichtigung:
Hallo
Im Ordner ABC sind X Dateien vorhanden, die schon länger als Y Minuten da sind.
Hier ist die Dateiliste:
1. Name, Datum, Uhrzeit
2. Name, Datum, Uhrzeit
3. Name, Datum, Uhrzeit
...
Bitte Informieren Sie die ensprechenden Personen.
MfG
Webbi
Den Inhalt der Datei will ich gar nicht wissen, da diese teilweise die Seiten "sprengen" würden.
Die Zeit müsste im Script eine Variable sein, da ich noch nicht genau weiss, wie wir mit der Zeit hinkommen.
Hier mal ein älteres Script (mit Eurer Hilfe) - Vielleicht kann man das ja gebrauchen:
Ich möchte ein Script erstellen, was alle 10 Minuten nachschaut, ob eine Datei in einem Ordner ist, die älter als XX Minuten schon im Ordner ist.
Quasi eine eMail-Benachrichtigung:
Hallo
Im Ordner ABC sind X Dateien vorhanden, die schon länger als Y Minuten da sind.
Hier ist die Dateiliste:
1. Name, Datum, Uhrzeit
2. Name, Datum, Uhrzeit
3. Name, Datum, Uhrzeit
...
Bitte Informieren Sie die ensprechenden Personen.
MfG
Webbi
Den Inhalt der Datei will ich gar nicht wissen, da diese teilweise die Seiten "sprengen" würden.
Die Zeit müsste im Script eine Variable sein, da ich noch nicht genau weiss, wie wir mit der Zeit hinkommen.
Hier mal ein älteres Script (mit Eurer Hilfe) - Vielleicht kann man das ja gebrauchen:
@echo off & setlocal
Set "Quell=C:\Inetpub\ftproot\ORDNER\OUT\"
Set message=FI-FEHLER am %date% um %time% entdeckt
Set "HINWEISTEXT02=Hallo"
Set "HINWEISTEXT03=Die Datein im OUT-Ordner gehen wieder nicht in SAP"
Set "HINWEISTEXT04="
Set "HINWEISTEXT05="
Set "HINWEISTEXT06="
Set "HINWEISTEXT07="
Set "HINWEISTEXT08="
Set "HINWEISTEXT09=MfG Webbi"
Set "HINWEISTEXT10=--------------------------"
set /a Anzahl=0
Set "change=INSERT"
set "bodytemp=%Quell%bodytemp.txt"
set "body=%Quell%body.txt"
if exist "%bodytemp%" del "%bodytemp%"
for /f "delims=" %%i in ('dir /b /od "%Quell%FI_*.*"') do call :ProcessLine "%Quell%%%i"
echo Es sind wieder Dateien da, die nicht in SAP rübergehen: %Anzahl% !>"%body%"
echo.>>"%body%"
type "%bodytemp%">>"%body%"
echo.>>"%body%"
echo %hinweistext02%>>"%body%"
echo %hinweistext09%>>"%body%"
if NOT "%Anzahl%"=="0" c:\batch\Blat\blat.exe "%body%" -to EMAIL -server SERVER -subject "%message%"
del "%bodytemp%"
del "%body%"
goto :eof
:ProcessLine
for /f "delims=" %%i in ('type %1') do set zeichen=%%i & echo ausgelesen [%%i]
set /a Anzahl+=1
goto :eof
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 73050
Url: https://administrator.de/contentid/73050
Ausgedruckt am: 19.11.2024 um 20:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Webbi1976!
Falls Du auch externe Tools einsetzen kannst, wäre Horst Schaeffer's "WasFile" zu empfehlen - eine Liste aller Dateien mit einem Änderungszeitpunkt von vor weniger als 10 Minuten erhältst Du zB mit folgender Eingabe (direkt an der Kommandozeile):
Grüße
bastla
P.S.: Für das Einbauen in den obigen Code habe ich im Moment leider keine Zeit.
Falls Du auch externe Tools einsetzen kannst, wäre Horst Schaeffer's "WasFile" zu empfehlen - eine Liste aller Dateien mit einem Änderungszeitpunkt von vor weniger als 10 Minuten erhältst Du zB mit folgender Eingabe (direkt an der Kommandozeile):
for %i in (D:\Test\*.*) do @C:\Tools\wasfile "%i" modified after now-10 && @echo %i, %~ti
Grüße
bastla
P.S.: Für das Einbauen in den obigen Code habe ich im Moment leider keine Zeit.
Hallo Webbi1976!
Ungetesteter Entwurf:
Bitte auch den Pfad "C:\batch\wasfile\wasfile.exe" anpassen ...
Grüße
bastla
Ungetesteter Entwurf:
@echo off & setlocal
Set "Quell=C:\Inetpub\ftproot\ORDNER\OUT\"
Set Min=10
set "bodytemp=%temp%\bodytemp.txt"
set "body=%temp%\body.txt"
if exist "%bodytemp%" del "%bodytemp%"
for %%i in ("%Quell%*.*") do C:\batch\wasfile\wasfile.exe "%%i" modified before now-%Min% && @echo %%i, %%~ti >>"%bodytemp%"
if not exist "%bodytemp%" goto :eof
set "message=Alte Dateien (%date% um %time%)"
for /f "delims=:" %%i in ('findstr /n . "%bodytemp%"') do set Anzahl=%%i
if not defined Anzahl goto :eof
echo Hallo>"%body%"
echo.>>"%body%"
echo Der Ordner %Quell% enthaelt %Anzahl% Datei(en) mit einem Alter von mehr als %Min% Minuten:>>"%body%"
echo.>>"%body%"
findstr /n . "%bodytemp%">>"%body%"
echo.>>"%body%"
echo.>>"%body%"
echo MfG Webbi>>"%body%"
c:\batch\Blat\blat.exe "%body%" -to EMAIL -server SERVER -subject "%message%"
del "%bodytemp%"
del "%body%"
Grüße
bastla
Moin Webbi,
falls Du den Einsatz der WasFile.exe scheuen solltest, ersetze den WasFile-Aufruf wie folgt
STATT der einen Zeile:
SETZE zwei hausgemachte mit temporärem VBS an dieselbe Stelle im Source:
Macht sonst keinen Unterschied (denke ich).
Die eine Zeile VBS gibt einen ERRORLEVEL-Wert von 0 zurück, falls die auf 10-Minuten-oder-weniger-alt geprüfte Datei ÄLTER ist als 10 Minuten.
Nur in diesem Fall wird eine neue Zeile in Deine Mini-Log-Datei geschrieben.
Grüße Biber
falls Du den Einsatz der WasFile.exe scheuen solltest, ersetze den WasFile-Aufruf wie folgt
STATT der einen Zeile:
for %%i in ("%Quell%*.*") do C:\batch\wasfile\wasfile.exe "%%i" modified before now-%Min% && @echo %%i, %%~ti >>"%bodytemp%"
SETZE zwei hausgemachte mit temporärem VBS an dieselbe Stelle im Source:
echo Wscript.Quit ^(DateDiff^("N", WScript.Arguments^(0^), Now^) ^< %Min%^) >%temp%\ddMin.vbs
for %%i in ("%Quell%*.*") do cscript //nologo %temp%\DDmin.vbs "%%~ti" && @echo %%i, %%~ti >>"%bodytemp%"
Macht sonst keinen Unterschied (denke ich).
Die eine Zeile VBS gibt einen ERRORLEVEL-Wert von 0 zurück, falls die auf 10-Minuten-oder-weniger-alt geprüfte Datei ÄLTER ist als 10 Minuten.
Nur in diesem Fall wird eine neue Zeile in Deine Mini-Log-Datei geschrieben.
Grüße Biber