andynix
Goto Top

Variable addieren (%%i und %%i=2 auch wenn der Inhalt 0 ist)

Log Datei auslesen - nur bei Fehlern melden

Hallo zusammen,
ich habe eine kleinen Batchdatei die mit ROBOCOPY kleines Backup fährt. Eine Logdatei wird dabei auch erstellt - er liest sie aber ?
Deswegen möchte ich dass eine Meldung kommt oder später etwas zur mir geschickt wird.

Es sieht wie folgt aus:

@echo off
for /F "Tokens=6 Delims= " %%i in ('type log.txt^|Find "Dirs"') do ( IF NOT %%i==0 set "fehler=%%i+%%i" )
echo %fehler%
if not %fehler%==0 goto fehler
echo Alles OK
goto :eof

:fehler
color c
title Achtung es sind Fehler aufgetreten
echo Überprüfe das Protokoll !

Das Problem liegt wohl in der fett geschriebenen Klammer ?
Bin für jede Hilfe dankbar.

Content-ID: 46937

Url: https://administrator.de/contentid/46937

Ausgedruckt am: 23.11.2024 um 12:11 Uhr

bastla
bastla 17.12.2006 um 21:18:59 Uhr
Goto Top
Hallo Andynix!

Versuch es mal statt der ersten beiden Zeilen so (dass die "type|find"-Kombination den richtigen Wert liefert, setze ich voraus):
@echo off & setlocal enabledelayedexpansion
set fehler=0
for /f "tokens=6 delims= " %%i in ('type log.txt^|find "Dirs"') do set /a fehler=!fehler!+%%i  

HTH
bastla
Biber
Biber 18.12.2006 um 07:37:51 Uhr
Goto Top
Moin Andynix,
nur als Fussnote zu bastla's Lösung.

In diesem Fall kannst Du es auch ohne die "DelayedExpansion" abfackeln

@echo off & setlocal
for /f "tokens=6 delims= " %%i in ('type log.txt^|find "Dirs"') do set /a fehler+=%%i  
...

Grüße
Biber
Andynix
Andynix 18.12.2006 um 09:41:14 Uhr
Goto Top
viellen Dank euch beiden,
beide Lösungen gehen, ich bevorzuge aber den Bieber.

Frage Nr.2 (aber auch zum Thema)
Kann ich beiden Spalten (Mismatch, FAILED) im einen rutsch auswerten ?

Total Copied Skipped Mismatch FAILED Extras
Dirs : 147 146 1 1 1 0
Biber
Biber 18.12.2006 um 14:21:23 Uhr
Goto Top
Moin Andynix,

Oh ja, da gibt es sogar eine kleine feine undokumentierte Syntax aus meinem Fundus für Dich:

@echo off & setlocal
for /f "tokens=5,6 delims= " %%i in ('type log.txt^|find "Dirs"') do set /a "cntMismatch+=%%i, cntFailed+=%%j"  

REM danach steht in %cntMismatch% die Summe-Anzahl-Mismatched und in %cntFailed% die Summe-Anzahl-Failed%.
...

...weil bald Weihnachten is'...


Gruß
Biber
Andynix
Andynix 19.12.2006 um 08:39:09 Uhr
Goto Top
...
:AUSWERTUNG
for /f "tokens=6,7 delims= " %%i in ('type F:\log.txt^|find "Dirs"') do set /a "cntMismatch+=%%i, cntFailed+=%%j"  
if not %cntMismatch%==0 goto FEHLER
if not %cntFailed%==0 goto FEHLER
...

...bin echt froh, dass ich die Frage kurz vor Weihnachten los bin (sonst bekämme ich womöglich keine Antwort face-smile
Es muss jedoch tokens=6,7 heißen.

...schöne Feiertage !...