freaggle

Zeile nach Wortfund ausgeben - Jedoch immer vom aktuellsten Datum

Hallo zusammen,

Habe mit toller Hilfe hier aus dem Forum eine Batch zur Suche nach Schlagwörtern zusammengebastelt.
Das läuft auch.
Habe nun jedoch ein neues Problem.
Ich suche wieder in einer Datei nach einem Schlagwort.
Kommt das Wort vor, soll er mir einen Teil der Zeile ausgeben, in der das Wort vorkommt. Das würde ich glaube ich noch hinbekommen..
Kommt das Wort öfters vor, soll er mir jedoch nur die Zeile ausgeben, in welcher das aktuellste Datum mit Zeit steht...
Kann so etwas mit einer Batch überhaupt funktionieren?

Hier mal meine Versuche so far:

@echo off
cd..
cd..
cd..
cd Backup_Report

call ANSI.bat
set "fail=0"  
set "kritisch=0"  
for /f "delims=" %%s in ('findstr /c:"[Major" c:\Backup_Report\BackupErrors.txt') do set /a fail+=1  
for /f "delims=" %%s in ('findstr /c:"[Critical" c:\Backup_Report\BackupErrors.txt') do set /a kritisch+=1  

IF  %fail% GTR 0 (
    echo Kritischer Fehler beim Backup. Bitte pruefen
    GOTO critical
)
IF  %kritisch% GTR 0 (
    echo Warnung beim Backup. Bitte pruefen
    GOTO warning
)

IF  %fail% == 0 (
    echo Backup ok
    GOTO ok
)
IF  %kritisch% == 0 (
    echo Backup ok
    GOTO ok
)
:ok 
exit /b 0 
:warning 
exit /b 1 
:critical 
exit /b 2


Mfg
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 182572

Url: https://administrator.de/forum/zeile-nach-wortfund-ausgeben-jedoch-immer-vom-aktuellsten-datum-182572.html

Ausgedruckt am: 06.06.2025 um 10:06 Uhr

60730
60730 26.03.2012 um 09:30:45 Uhr
Goto Top
Moin,

Bitte verzeih mir, aber batches, die nicht laufen und die ohne code tags, dafuer aber mit fuehrendem €cho off geschrieben werden.
Da macht langsam wirklich gar keinen spass mehr.

Gruss

Ps edit
/edit
Jupp
kommentar bearbeiten funktioniert.
pieh-ejdsch
pieh-ejdsch 26.03.2012 um 09:37:26 Uhr
Goto Top
moin freaggle,

sehe ich das Richtig, dass Du eine Logdatei für mehrere Backupprozesse benutzt?
Dann muss Dir aber das Datum (letztes aktuellstes Datum) von diesem Backup bekannt sein, um die Zeile Herauszufiltern.
Wenn Du in den besagten Zeilen immer ein Datum mitstehen hast, dann Such nach dem Datum der letzten Änderung des Log.

setlocal
set "Fail="  
set "critical="  
set "Log=c:\Backup_Report\BackupErrors.txt"  
for /f %%i in ('dir "%LOG%" ^|findstr /b [0-9]') do set "LastLogDate=%%i"   
for /f "delims=" %%i in ('find "%LastLogDate%" "%Log%" ^|find "[Critical" ') do set "Critical=1" &echo Warnung beim Backup. Bitte pruefen &echo %%i &exit /b 2  
for /f "delims=" %%i in ('find "%LastLogDate%" "%Log%" ^|find "[Major" ') do set "Fail=1" &echo Warnung beim Backup. Bitte pruefen &echo %%i &exit /b 1  

exit /b 0

PS. Text/CodeFormatierung haben wir hier auch

Gruß Phil
Lochkartenstanzer
Lochkartenstanzer 26.03.2012 um 10:21:24 Uhr
Goto Top
bastla
bastla 26.03.2012 um 10:49:36 Uhr
Goto Top
@ph
Die Anforderung "aktuellstes Datum" würde ich im Zweifelsfall einfach durch eine Sortierung vorweg realisieren - nach welcher Spalte dabei zu sortieren wäre, fällt aber offensichtlich unter "Geheimhaltung" (die der TE trotz Hinweis in seinem vorigen Thread weiterhin aufrecht erhält) ...

Grüße
bastla
pieh-ejdsch
pieh-ejdsch 26.03.2012 um 11:20:48 Uhr
Goto Top
moin bastla,

naja, Datum Sortieren hätte dann aber nur Sinn, wenn das Format
YYYYMMDD
genommen wird. Bzw. kleinere Einheiten den größeren Folgen.
wenn in der Zeile nach DATUM a oder b oder Z folgt ist die Sortierung nach DD.MM.YYYY erfolglos bzw. nicht wie erwartet.

dir |sort +3

PS. wenn Zweifelsfall bedeutet das Backup ging über die Tagesgrenze?

Gruß Phil
bastla
bastla 26.03.2012 um 11:53:21 Uhr
Goto Top
@ph
Zweifelsfall bedeutet das Backup ging über die Tagesgrenze?
Soll ja auch vorkommen - tatsächlich aber fehlen mir ganz grundsätzlich Informationen über den Aufbau der Datei ...

Grüße
bastla
freaggle
freaggle 26.03.2012 um 11:59:47 Uhr
Goto Top
Das @echo off habe ich hier aus dem Forum übernommen...


@bastla
Welche Infos benötigst du?

So sieht ein Teil der Log-Datei aus:

Major] From: VBDA@Server1" Q: [Quorum]" Time: 26.03.2012 00:24:49
[81:72] Q:
Cannot verify filesystem mount point: ([3] Das System kann den angegebenen Pfad nicht finden. ).

[Critical] From: VBDA@Server2 "Q: [Quorum]" Time: 26.03.2012 00:24:49
[81:52] /Q
Not a valid mount point => aborting.

Es wird ein Backup von den Servern durchgeführt und auftretende Fehler in dieser Datei sortiert nach Server und Datum + Uhrzeit aufgelistet.
Als Ausgabe auf Nagios benötige ich jedoch nur den letzten Fehler, sprich "Server XY, Datum, Uhrzeit
Die Fehlermeldung an sich ist erstmal nicht so wichtig.

@pieh-ejdsch
Danke dir. Das funktioniert schon mal wunderbar. Jetzt müßte ich neben dem Datum noch die Uhrzeit mit abfragen können
pieh-ejdsch
pieh-ejdsch 26.03.2012 um 14:14:15 Uhr
Goto Top
wenn Die anderen Server egal sind, dann in etwa so

setlocal
set "[Major]="  
set "[Critical]="  
set "Log=c:\Backup_Report\BackupErrors.txt"  
for /f %%a in ('dir "%LOG%" ^|findstr /b [0-9]') do for /f "tokens=1,3,7,8" %%i in ('find "%%a" "%Log%" ^|findstr /L "[Critical] [Major]" ') do set "%%i=%%j,%%k,%%l"  

if defined [Critical] echo Warnung beim Backup. Bitte pruefen &echo %[Critical]% &exit /b 2
if defined [Major] echo Warnung beim Backup. Bitte pruefen &echo %[Major]% &exit /b 1
exit /b 0

Wenn wirklich nur die Letzte Meldung Massgebend sein sollte, eine Feste Variable abfragen.

Gruß Phil
freaggle
freaggle 26.03.2012 um 16:13:17 Uhr
Goto Top
Der Server wäre schon wichtig, damit man direkt sehen kann, um welche Maschine esich handelt.
Und bi dem obigen Beispiel spuckt er einfach die letzen Einträge von Major und Critical in der Datei aus.
Die Uhrzeit ist dabei irrelevant.Die wäre aber auch wichtig