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-Key: 46937

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

Printed on: April 24, 2024 at 11:04 o'clock

Member: bastla
bastla Dec 17, 2006 at 20:18:59 (UTC)
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
Member: Biber
Biber Dec 18, 2006 at 06:37:51 (UTC)
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
Member: Andynix
Andynix Dec 18, 2006 at 08:41:14 (UTC)
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
Member: Biber
Biber Dec 18, 2006 at 13:21:23 (UTC)
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
Member: Andynix
Andynix Dec 19, 2006 at 07:39:09 (UTC)
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 !...