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

Frage Entwicklung Batch & Shell

Mitglied: Micha1982

Micha1982 (Level 1) - Jetzt verbinden

28.12.2005, aktualisiert 04.01.2006, 9807 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
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 8 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 12 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 12 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 15 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server15 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...