Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Batch Script zum Auswerten einer Logdatei

Mitglied: Micha1982

Micha1982 (Level 1) - Jetzt verbinden

28.12.2005, aktualisiert 04.01.2006, 9828 Aufrufe, 4 Kommentare

[Edit] Aus meiner Sicht beantwortet. Biber [/Edit]

Hallo,

ich hoffe ihr könnt mir bei folgendem Problem weiterhelfen.

Ich versuche mit einem CMD-Script zu prüfen ob in eine Logdatei neue Einträge geschrieben werden, mit dem Hintergrund das bei neuen Einträgen eine Mail versendet werden soll.
Das Script soll minütlich diese Logdatei pollen.

Mein Lösungsansatz ist die Einträge in der Logdatei zu zählen um dann bei einer Abweichung des Zählerstandes die Mailbenachrichtigung auszulösen.
Dazu verwende ich folgenden Befehl in dem Script:

FOR /F "delims=" %%A IN (D:\TEST\tmp1.txt) DO SET /A COUNTER=%COUNTER% + 1

Jedoch zählt er nicht nach jeder Zeile den Counter um 1 hoch sondern erst wenn er alle Einträge in der Logfile durchlaufen hat... wie müsste der Befel lauten damit er jede Zeile zählt???
Bin auch für andere Lösungsansätze offen.

Gruß,

Michael
Mitglied: Biber
28.12.2005 um 19:57 Uhr
Moin Micha1982,

drei Möglichkeiten wüßte ich, wahrscheinlich gibt es noch ein paar mehr.
a) Die einfachste (und undokumentierteste):
Set /A "Counter=0"
FOR /F "delims=" %%A IN (DeineDatei) DO SET /A "COUNTER+=1"
....

Die beiden dokumentierten (na ja, für M$-Verhältnisse dokumentierten):
b)
...
Setlocal enableDelayedExpansion
Set /A "Counter=0"
FOR /F "delims=" %%A IN (DeineDatei) DO SET /A "COUNTER=!Counter!+1"
Setlocal disableDelayedExpansion
...
c)
...
Set /A "Counter=0"
FOR /F "delims=" %%A IN (DeineDatei) DO call :aMiniSub
....
:aMiniSub
SET /A "COUNTER=%Counter%+1"
goto :eof
...
Ich denke, alle 3 Möglichkeiten sind auch im Bereich "Batch & Shell" in den Tutorials beschrieben.

HTH Biber
[Edit]
P.S. Zum Thema anderer Lösungsansatz:
Ich würde, speziell wenn es um größere Logdateien geht, eher als Strategie über das letzte Änderungsdatum der Datei gehen.
Das heißt, in einer einzeiligen Mini-Text-Datei den zuletzt vom Batch geprüften Datum/Zeitwert speichern und diesen mit dem aktuellen Timestamp vergleichen.
Anderenfalls musst Du ja jedesmal durch alle Zeilen der Logdatei wackeln, auch um möglicherweise festzustellen, dass die Logdatei dieses Mal 47.666 Zeilen hat und dass esvor einer Minute auch schon genauso war...ist nicht sonderlich performant.
Und die "zuletzt gelesene Zeilenzahl" musst Du da auch irgendwo "Dir merken", also speichern. Ist von daher ja keine große Änderung.
[/Edit]
Bitte warten ..
Mitglied: Micha1982
29.12.2005 um 09:33 Uhr
Hi Bieber,

erstmal Danke für die Antwort das bringt mich schon ein Stückchen weiter.

Das mit dem Änderungsdatum der Logdatei gestaltet sich leider etwas schwierig, da die Logdatei der Applikation alle 5 Minute komplett neu geschrieben wird, unabhängig davon ob ein neuer Eintrag hinzugefügt wird oder nicht.

Ein weiteres "Problem" ist das die Logdatei nur die Werte der letzten 30 Tage enthält, also die Dateigröße auch schlecht als Auswahlkriterium verwendet werden kann. Andererseits bleibt die Logdatei somit aber in einem gewissen Rahmen was die Größe angeht...

Fällt dir noch eine andere Möglichkeit ein?

Gruß,

Michael
Bitte warten ..
Mitglied: Micha1982
04.01.2006 um 08:17 Uhr
Hallo habe nun folgendes Script als Lösung des Problems und es funktioniert bisher ohne Probleme Danke an Biber für die Unterstützung.

::VARIABLEN
SET WORKDIR=Programmpfad
SET BLAT=D:\BLAT\blat.exe

SET LOG1= Pfad für Logdatei Mandant 1
SET LOG1_COPY=Pfad für Logdateikopie Mandant 1

SET LOG2= Pfad für Logdatei Mandant 2
SET LOG2_COPY= Pfad für Logdateikopie Mandant 2

SET TMP1=%WORKDIR%\tmp1.txt
SET TMP2=%WORKDIR%\tmp2.txt

SET /A MAIL1=0
SET /A MAIL2=0

::MAIN
FOR /F "eol= delims=. tokens=1,2,3" %%A IN ("%DATE%") DO SET "DATEFORM=%%C-%%B-%%A"
CALL :CHK1
CALL :CHK2
CALL :MAIL
GOTO :EOF

::SUBS

:CHK1
ECHO Folgende Dateien wurden gedruckt:>%TMP1%
FC %LOG1% %LOG1_COPY% | FIND "%DATEFORM%">>%TMP1%
IF "%ERRORLEVEL%"=="0" (COPY %LOG1% %LOG1_COPY% && SET /A MAIL1=1) ELSE
GOTO
:QUIT
GOTO :EOF

:CHK2
ECHO Folgende Dateien wurden gedruckt:>%TMP2%
FC %LOG2% %LOG2_COPY% | FIND "%DATEFORM%">>%TMP2%
IF "%ERRORLEVEL%"=="0" (COPY %LOG2% %LOG2_COPY% && SET /A MAIL2=1) ELSE
GOTO
:QUIT
GOTO :EOF

:MAIL
IF "%MAIL1%"=="1" %BLAT% %TMP1% -to email@kunde.de -subject "Ausdruck auf
Drucker Mandant1" -sig %WORKDIR%\sig.txt
IF "%MAIL1%"=="1" %BLAT% %TMP2% -to email@kunde.de -subject "Ausdruck auf
Drucker Mandant2" -sig %WORKDIR%\sig.txt
GOTO :EOF

:QUIT
EXIT

Gruß,

Michael
Bitte warten ..
Mitglied: Biber
04.01.2006 um 19:27 Uhr
Dir auch danke fürs Veröffentlichen, Micha,

und ich setze den Beitrag jetzt mal auf Closed.

Schönen Abend und bis zum nächsten Batch
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
CSV Dateien auswerten mit Script
gelöst Frage von Crank69Batch & Shell8 Kommentare

Hallo Leute, habe ein Problem und hoffe ihr könnt mir helfen. Ich hoffe das die Bilder helfen bei meinem ...

Windows 7
Kopiervorgang Logdatei
Frage von Riddler123Windows 71 Kommentar

Hi, hab ne NAS Festplatte und wollte wissen ob ich auf meinem Windows 7 Laptop nach dem Kopieren von ...

Batch & Shell
txt Listen Auswerten per Batch-Datei
gelöst Frage von Ivowie97Batch & Shell8 Kommentare

Hallo Zusammen Ich habe zwei .txt Listen mit Werten drin, die ich mit einer Batch-Datei auswerten möchte. In der ...

Batch & Shell
Klammersetzung in Windows Batch Script
gelöst Frage von VancouveronaBatch & Shell2 Kommentare

Hallo zusammen, Kann man innerhalb einer IF Klammerung For Do Klammerungen nutzen? Oder fällt Windows dabei auf's Gesicht? Beispiel: ...

Neue Wissensbeiträge
Humor (lol)
Meine Variante der DSGVO
Tipp von Henere vor 1 TagHumor (lol)3 Kommentare

Datenschutzerklärung Jede gute Website braucht eine Datenschutzerklärung? Ok, dann machen Sie sich auf etwas gefasst. Präambel Artikel 12 der ...

Administrator.de Feedback

Entwicklertagebuch: Datenschutzerklärung nach DS-GVO

Information von admtech vor 2 TagenAdministrator.de Feedback

Hallo Administrator User, Wir respektieren eure Privatsphäre und möchten euch daher auf die Möglichkeiten für den Umgang mit euren ...

Voice over IP

Rufnummernblock aufbrechen nun möglich bei DTAG

Tipp von Datenreise vor 2 TagenVoice over IP

Bei der Telekom ist es seit einigen Tagen laut Aussage der Geschäftskunden-Hotline möglich, eine Rufnummernübernahme auch dann durchzuführen, wenn ...

Netzwerke
Riesiges Botnetz in Deutschland
Tipp von FFSephiroth vor 2 TagenNetzwerke1 Kommentar

Überprüft mal eure Router und NAS

Heiß diskutierte Inhalte
CPU, RAM, Mainboards
Wieviel Lüfter hat ein HP Elitebook 8730w ?
Frage von -WeBu-CPU, RAM, Mainboards8 Kommentare

Guten Morgen, gestern Abend hat sich bei meinem HP ein/der Lüfter hörbar abgeschaltet oder stark runter geregelt, obwohl das ...

Batch & Shell
Brauche hilf bei einer batch Datei
gelöst Frage von PilllllleBatch & Shell7 Kommentare

hallo, ich versuche mit Hilfe von einer batch- Datei eine bestimmt Zeile aus einer txt- Datei in eine neue ...

Windows Server
Passwort für Terminalserver-Login über IGEL-Client neu vergeben ?
gelöst Frage von WernimanWindows Server6 Kommentare

Hallo, ich bin -verglichen mit euch- ein absoluter Rookie in der Branche, habe aktuell seit meiner Ausbildung gerade den ...

Outlook & Mail
Aufgabenfilter in Outlook
Frage von jensgebkenOutlook & Mail5 Kommentare

Hallo Gemeinschaft, habe ein exchange konto eingerichtet, auf welches drei Mitarbeiter zugreifen - Ich möchte dieses Konto auch gerne ...