tan321
Goto Top

Wie kann ich eine bestimmte Zeile ausgeben (log)

Hallo,
aus mehrer erstellten Log-Dateien,
sollte eine bestimmte Zeile angezeigt werden.
Ich kenne es nur von PHP mit einer Variable zu definieren,
und anzeigen zu lassen,wie geht es jedoch bei Shell.

Hier mal ein Ausschnitt aus Log:
Total Copied Skipped Mismatch FAILED Extras

Dirs : 1 : 1 : $S=0 : $M=0 : $F=0 : :
Files : 15 : 15 : 0 : 0 : 0 : :
Bytes : 6188 : 6188 : 0 : 0 : 0 : :
Times : 0:04:59 :0:04:59 : : : : :
: : : : : : :
Speed : 222 B/s
Speed : 127 MB/s
: : : : : : :
Ended : Sun Aug 01 03:24:54 2010


DIe Variable $S, $M und $F habe ich selber reingeschrieben.
Diese "Variablen" sollen angezeigt werden.ABer wie ?

Desweiteren soll wenn $S eine 1 ist,eine Text ausgeben, 0= OK oder 1=nicht OK

Wie kann ich es realisieren?

Ich danke vielmals im voraus.

Mfg

Content-Key: 150242

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

Printed on: April 16, 2024 at 15:04 o'clock

Member: Biber
Biber Sep 02, 2010, updated at Oct 18, 2012 at 16:43:20 (UTC)
Goto Top
Moin tan321,

willkommen im Forum.

Auch wenn sich nach mehrmaligem Lesen der Verdacht erhärtet, es könnte sich möglichweise um eine Aufgabenstellung aus dem Kontext "Robocopy.Log-Auswertung" und somit aus dem Bereich Windows handeln...

Was hätte denn dagegen gesprochen, das verwendete System (="Windows") und das Werkzeug "Robocopy" mit anzugeben?
Dann hätte irgendjemand garantiert innerhalb von Muten zurückgeschriebe:
"Hey, benutz doch einfach mal die rattenscharfe Forumssuche hier, gib "Robocopy.log" ein und klick dich durch.
Oder klick meinetwegen auf die dort aufgelisteten Beiträge robocopy log file, da steht alles drin."


Wie gesagt, das wäre alles passiert, wenn du vernünftig gefragt hättest...face-wink

So allerdings wirst du vermutlich monatelang keine einzige brauchbare Antwort bekommen.

Grüße
Biber
Member: tan321
tan321 Sep 03, 2010 at 11:03:48 (UTC)
Goto Top
Vielen Dank für die schnelle Antwort.
Ich verwende WIndows und Robocopy.

Mein bat. Datei sieht folgendermaßen aus:
@echo off & setlocal
set /a Failed=0
for /f "tokens=7" %%i in ('findstr /C:"Files :" /log.txt') do set /a Failed+=%%i  
If %Failed%==0 goto :OK
echo %Failed% Fehler gefunden!
goto :eof
:OK
echo Sicherung OK
goto :eof

Jedoch erhalte ich folgende Fehlermeldung?!
FINDSTR: /g wurde ignoriert
FINDSTR: /. wurde ignoriert
FINDSTR: /t wurde ignoriert
FINDSTR: /t wurde ignoriert

Woran kann es liegen?
Member: Biber
Biber Sep 03, 2010 at 12:58:52 (UTC)
Goto Top
Moin tan321,

Woran kann es liegen?
Vermutlich an dem Schrägstrich in der Dateiangabe "/log.txt".

  • Lass bitte der Schrägstrich wenn, wenn er nur eine Datei aus dem aktuellen Verzeichnis durchsuchen soll
  • oder ersetze den "/" durch einen backslash "\", wenn es bedeuten soll, die Datei log.txt liegt auf dem Root-verzeichnis
  • oder ersetze die Angabe durch ":d:\temp\logs\log.txt", wenn die Datei im verzeichnis "d:\temp\logs" liegt.

Grüße
Biber
Member: tan321
tan321 Sep 03, 2010 at 13:24:48 (UTC)
Goto Top
Ich habe soeben die genannten Dinge ausprobiert,
dann lässt sich der DOS Fenters <1 sec öffnen und schließen.
Leider liegt das Problem woanders, und finde keine Lösung zu.

Nochmal die Logdatei:
-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows :: Version XP010
-------------------------------------------------------------------------------

Total Copied Skipped Mismatch Failed Extras
Dirs : 2 2 0 0 1 0
Files : 2 2 0 0 1 0
Bytes : 75.32 m 75.32 m 0 0 0 0
Times : 0:00:00 0:00:00 0:00:00 0:00:00

Speed : 560136113 Bytes/sec.
Speed : 32051.245 MegaBytes/min.

Ended : Mon Jun 10 17:44:10 2008

Mfg
tan321
Member: Biber
Biber Sep 03, 2010 at 15:00:36 (UTC)
Goto Top
Moin tan321,

ich weiss jetzt nicht, in welcher IDE du diesen Effekt mit dem in weniger als 1 Sekunde schließenden DOS-Fenster generierst.
Bei mir (Win XP SP3) tritt dieses Phänomen nur auf, wenn ich am CMD-Fenster "exit" eintippe.

Du könntest noch zur Probe mal
If "%Failed%"=="0" goto :OK
--> die beiden gegeneinander geprüften Werte in Hochkomma setzen. vielleicht hilft es.

Wenn nicht, dann musst du auf einen der Spezialisten warten, die per Doppelklick vom Desktop debuggen können. Ich kann das nicht.

Grüße
Biber
Member: pieh-ejdsch
pieh-ejdsch Sep 03, 2010 at 17:53:16 (UTC)
Goto Top
moin tan321,

Zeile 03 und Zeile 04 liessen sich vllt so verkürzen
(for /f "tokens=7" %%i in ('findstr /C:"Files :" log.txt') do set /a Failed+=%%i)||goto :OK
oder so wie Biber Schraubte...

desweiteren hast Du Dein Batch nur gesagt das er sich sofort nach der AnzeigeMeldung wieder Verabschieden soll, wenn Du den Batch nicht von der CMD-Line gestartet hast.
für eventuelle lesbarkeit von UltraKurznachrichten haben sich folgende AbschlussZeilen bewährt:
pause&goto :eof
oder ohne Kommentar
pause>nul&goto :eof
oder mit Kommentar
echo Drueck mich und ich Verschwinde!&pause>nul&goto :eof
oder SelbstVerschwindend
ping localhost -n 5 >nul&goto :eof

@Biber einen selbverschwindenden Debugger hatte ich auch noch nicht!

Gruß Phil
Member: tan321
tan321 Sep 06, 2010 at 20:51:50 (UTC)
Goto Top
Vielen Dank für eure Hilfen.
Der Script funktioniert nun einwandfrei.