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, 9843 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
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
Ping script batch
gelöst Frage von ThePommesBudeBatch & Shell4 Kommentare

Hallo, ich habe hier ein kleines script geschrieben, dass die IP adressen Pingen soll und zurück geben soll, ob ...

Batch & Shell
Batch Script Datensicherung
gelöst Frage von PatrickB90Batch & Shell1 Kommentar

Guten morgen, zur Datensicherung mehrerer Access MDBs wird ein regelmäßiger Task ausgeführt, der die Daten auf einen NAS kopiert. ...

Batch & Shell
Batch Drucker Script
gelöst Frage von Angelo131095Batch & Shell3 Kommentare

Guten Tag, mein Name ist Angelo, ich Helfe unserem Administrator in der Schule und habe ein Script für die ...

Neue Wissensbeiträge
Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 17 StundenWindows Mobile

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 2 TagenInternet5 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 2 TagenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 3 TagenWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Heiß diskutierte Inhalte
TK-Netze & Geräte
TAPI auf einem Win2016Server installieren und einrichten
Frage von wstabelTK-Netze & Geräte32 Kommentare

Hallo liebe Admins, ich habe folgende Situation: 1 Windows Server 2016 Standard als DC 1 SNOM 710 IP-Telefon 1 ...

Off Topic
Darf ich ein Forum erstellen das Produkte eines Herstellers betrifft?
Frage von cyberwallOff Topic9 Kommentare

Hallo Community, ich habe da eine "rechtliche" bzw. allgemeine Frage zum erstellen von Foren. Darf ich als "normale Person" ...

DNS
SFTP über DynDNS nicht OK - über ext. IP funktioniert es
Frage von C.MorgensternDNS8 Kommentare

Hallo zusammen! Ich habe Probleme beim SFTP Zugriff auf eine Linux Maschine vom WAN aus über eine DynDNS Adresse. ...

Router & Routing
Unbekannte IPv4 Adresse im Routerprotokoll(Portweiterleitung)
gelöst Frage von tklustigRouter & Routing7 Kommentare

Hallo Leute, folgender Screenshot(ScanVersusPortForwarding.jpg) zeigt die im Routerprotokoll aufgezeigten Portweiterleitungen und alle von einem IPScanner eruierten IPv4 Adressen in ...