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:
Mfg
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 182572
Url: https://administrator.de/contentid/182572
Printed on: April 24, 2024 at 23:04 o'clock
9 Comments
Latest comment
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.
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.
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.
PS. Text/CodeFormatierung haben wir hier auch
Gruß Phil
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
@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
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
moin bastla,
naja, Datum Sortieren hätte dann aber nur Sinn, wenn das Format
wenn in der Zeile nach DATUM a oder b oder Z folgt ist die Sortierung nach DD.MM.YYYY erfolglos bzw. nicht wie erwartet.
PS. wenn Zweifelsfall bedeutet das Backup ging über die Tagesgrenze?
Gruß Phil
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
wenn Die anderen Server egal sind, dann in etwa so
Wenn wirklich nur die Letzte Meldung Massgebend sein sollte, eine Feste Variable abfragen.
Gruß Phil
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