larz
Goto Top

Per Batch Dateigröße prüfen, Erreichung eines Schwellwerts per Mail melden

Möchte man das Datenwachstum einer Datei überwachen, so gibt es sicherlich eine Menge Tools.
Das ganze lässt sich aber auch mit Bordmitteln und dem Tool blat.exe lösen...

Ausgangssituation
Das Wachstum einer Protokolldatei (oder einer x-beliebigen Datei) soll überwacht werden. Wird die Datei zu groß, erhält der Admin eine Benachrichtigung.

Benötigt
- Batch-Datei Check_Filesize.bat (neu zu erstellen)
- Kommandozeilen-E-Mailer "blat.exe" (http://www.blat.net)

REM Definiere Variablen für Umlaute zur korrekten Darstellung (ASCII/ANSI Problem)
REM Die Mail soll ja in korrektem Deutsch erfolgen
REM ---------------------------------------------------------------------------------------
chcp 1252>nul
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
chcp 850>nul

REM Hier werden zunächst die zu überwachende Datei und der Schwellwert definiert:
REM ---------------------------------------------------------------------------------------
SET Zieldatei=c:\log.txt
SET Schwellwert_in_Byte=1048576

REM Hier werden die E-Mail-Parameter gesetzt, für die 
REM Benachrichtigung bei Überschreitung
REM ---------------------------------------------------------------------------------------
SET Sender=Sender@Domain.com
SET Password=geheim
SET SMTPServer=smtp.server.de
SET Recipient=empfänger@Domain.com

REM Wenn es die Datei nicht gibt, wird ein Mail an den Admin geschickt
REM ---------------------------------------------------------------------------------------
IF NOT EXIST %Zieldatei% GOTO :FILEDOESNOTEXIST

REM Prüfung, ob die Datei größer als Wert X ist 
REM Wenn nein, Abbruch der Batch
REM ---------------------------------------------------------------------------------------
for /f %%i in ("%Zieldatei%") do if %%~zi GTR %Schwellwert_in_Byte% goto  FILESIZEEXCEED  
EXIT

:FILEDOESNOTEXIST
REM E-Mail an den Admin schicken, dass die Datei "plötzlich" weg ist :-)  
REM ---------------------------------------------------------------------------------------
blat.exe -body "Die Datei %Zieldatei% existiert nicht oder konnte nicht erreicht werden!" -to %Recipient% -subject "Datei nicht existent oder unerreichbar" -Server %SMTPServer% -f %Sender% -u %Sender% -pw %Password% >> log.txt  
EXIT

:FILESIZEEXCEED
REM E-Mail an den Admin senden, dass die Datei zu groß ist
REM ---------------------------------------------------------------------------------------
blat.exe -body "Die Datei %Zieldatei% hat den vorgegebenden Schwellwert von %Schwellwert_in_Byte% Byte %ue%berschritten!" -to %Recipient% -subject "Dateigr%oe%%ss%e hat Schwellwert %ue%berschritten!" -Server %SMTPServer% -f %Sender% -u %Sender% -pw %Password%  
EXIT

Gruß
Larz

Content-Key: 125715

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

Printed on: April 24, 2024 at 08:04 o'clock

Member: Alex1989
Alex1989 Sep 25, 2009 at 06:52:01 (UTC)
Goto Top
Nettes Script, vielleicht nicht nur für eine Datei, sondern für nen ganzen Ordner (wie häufig kommt es vor, dass man hört "ich hab nur kurz mit der Maus...und der Ordner ist in irgendeinem unterordner...)

Gruß,

Alex
Mitglied: 55648
55648 Oct 19, 2009 at 07:49:41 (UTC)
Goto Top
Tolles Script!

Werde mal ein wenig damit spielen und schauen, ob ich nicht automatisch die größen der Mailfiles damit überwachen kann. Ordnergrößen wären natürlich auch was feines.
Member: Ma-Admin
Ma-Admin Nov 05, 2009 at 10:38:25 (UTC)
Goto Top
Hallo,

danke für das tolle Script ! Ich hab es versucht für meine Bedürfnisse zu vereinfachen und umzuschreiben, leider geht das nicht ganz so wie ich es gerne hätte face-smile

Mein Ziel ist es:

Der (Ordner)Desktop soll auf seine Größe überprüft werden und wenn es größer als 10MB ist soll eine Meldung beim Benutzer aufpoppen.

Hier mein Script face-smile Vll. kann mir jmd. helfen !


<ANFANG>

@echo OFF

SET Zieldatei="c:\dokumente und einstellungen\%username%\desktop\"
SET Schwellwert_in_Byte=1048670


for /f %%i in ("%Zieldatei%") do if %%~zi GTR %Schwellwert_in_Byte% goto FILESIZEEXCEED

EXIT


:FILESIZEEXCEED

echo
echo * IHR DESKTOP IST ZU GROSS *
echo
echo * BITTE LOESCHEN SIE NICHT *
echo
echo * BENOETIGTE DATEIEN *
echo
PAUSE

<ENDE>
Member: Larz
Larz Nov 13, 2009 at 17:24:08 (UTC)
Goto Top
Hallo Ma-Admin,

ich glaube mit Batch geht das nicht. Bastla hat batch ordnergröße Berechnen aber mal was mit nem temporären VB-Script produziert, ich kopiere und ergänze mal:

@echo off & setlocal
REM Variablen für Umlaute deklarieren
chcp 1252>nul
set ue=ü&& set ae=ä&& set oe=ö&& set Uue=Ü&& set Aae=Ä&& set Ooe=Ö&& set ss=ß
chcp 850>nul

REM Variablen für Zielordner, Schwellwert und temporäres VB-Script deklarieren
set Schwellwert_in_MB=10
set "Zielordner=%userprofile%\Desktop"  
set "FS=%temp%\GetFolderSize.vbs  

:DoAction
echo WScript.Echo Int(CreateObject("Scripting.FileSystemObject").GetFolder(WScript.Arguments(0)).Size/1024/1024+.99)>%FS%  
for /f %%i in ('cscript //nologo %FS% "%Zielordner%"') do set OGr=%%i  
del %FS%
IF %OGr% GTR %Schwellwert_in_MB% GOTO FolderSizeExceed

:FolderSizeNotExceed
cls
title Gr%oe%%ss%e nicht %ue%berschritten
color 2F
cls
@echo.
@echo.
@echo.
@echo =====================================================
@echo Maximale Gr%oe%%ss%e des Ordners von %Schwellwert_in_MB% MB
@echo wurde nicht %ue%berschritten - alles ok
@echo =====================================================
@echo.
@echo.
@echo.
pause
EXIT


:FolderSizeExceed
cls
title Gr%oe%%ss%e wurde %ue%berschritten!
color 4F
cls
@echo.
@echo.
@echo.
@echo =======================================================
@echo Maximale Gr%oe%%ss%e des Ordners wurde %ue%berschritten! 
@echo Die maximal zugelassene Gr%oe%%ss%e betr%ae%gt %Schwellwert_in_MB% MB!
@echo Bitte l%oe%schen Sie nicht mehr ben%oe%tigte Dateien
@echo =======================================================
@echo.
@echo.
@echo.
pause
EXIT

Passt das so?

Gruß
Larz
Member: Ma-Admin
Ma-Admin Jan 21, 2010 at 13:43:10 (UTC)
Goto Top
Hallo,

entschuldige meine späte Antwort face-smile

Ja das Script ist perfekt, so wollte ich es haben ! Funktioniert 1A !