Entwickler-Ecke
Off Topic - Batch Datei zum Logging von Ping
avoid - Mi 18.06.14 20:22
Titel: Batch Datei zum Logging von Ping
Ich hab mir mit Hilfe einiger Forumsbeiträge eine kleine Batch Datei erstellt.
Leider verstehe ich davon nicht genug um zu verstehen warum ich in die Textdatei sowohl die OK als auch die Fehler geschrieben bekomme aber in der Liveanzeige sehe ich nur die OK Meldungen.
Dort hätte ich auch gerne die Fehler gesehen.
Liegt das evtl. daran das die for schleife nur bei OK verlassen wird?
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| @echo off set ip=192.168.178.1 set logdatei=c:\test.txt
:start set Erfolg=Fehler for /f "tokens=7 delims==< " %%i in ('ping -n 1 %IP%^|findstr "TTL"') do set "Zeit= - %%i" && set "Erfolg=OK" >>%logdatei% echo %IP% - %date%-%time% - %Erfolg%%Zeit% cls @echo Ping zur IP %IP% gestartet. @echo Aufzeichnung nach %logdatei% aktiv. @echo Zum beenden Strg+C verwenden. @echo ------------------------------------------- @echo %date%-%time% - %Erfolg%%Zeit% @echo: goto start |
evtl. hat jemand ne Idee.
schon mal danke.
avoid - Do 19.06.14 11:01
mir ist gerade noch etwas eingefallen.
lässt sich evtl. der Dateiname so ändern das dass Datum mit drin steht?
damit um Mitternacht automatisch eine neue Datei erstellt wird?
Th69 - Do 19.06.14 11:41
Zu deiner letzten Frage:
Quelltext
1: 2: 3: 4: 5:
| set logdatei=c:\test set logextension=.txt
// weiter unten >>%logdatei%_%date%%logextension% |
Narses - Do 19.06.14 12:11
Moin!
Wenn ich was in max. 5 min. nicht in cmd nicht hinkriege, nehme ich normalerweise Perl... :zwinker: Warum sich mit MS-Syntax rumquälen... :?
Aber ich verstehe dein Problem nicht, bei mir funktioniert´s:
(Das kann aber auch daran liegen, dass dieses Subnet bei mir nicht erreichbar ist. ;) Hab jetzt allerdings auch keine Zeit/Lust zu suchen... hab eh nicht verstanden, was das werden soll?)
Ich habe deine Syntax auch etwas überarbeitet (so hätte ich das nicht geschrieben):
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| @echo off set ip=192.168.178.1 set logdatei=c:\test.log
:start set Erfolg=Fehler for /f "tokens=7 delims==< " %%i in ('ping -n 1 %IP%^|findstr "TTL"') do set Zeit=" - %%i" && set Erfolg=OK echo %IP% - %date%-%time% - %Erfolg%%Zeit% >>%logdatei% cls echo Ping zur IP %IP% gestartet. echo Aufzeichnung nach %logdatei% aktiv. echo Zum beenden Strg+C verwenden. echo ------------------------------------------- echo %date%-%time% - %Erfolg%%Zeit% echo: goto start |
Und noch zu deinen Fragen:
avoid hat folgendes geschrieben : |
Liegt das evtl. daran das die for schleife nur bei OK verlassen wird? |
Die For-Schleife wird bei jedem Aufruf der Kette ping|findstr verlassen, da sie die Ausgabe analysieren soll (ist etwas gewöhnungsbedürftig).
Und noch zum Verständnis: IMHO sind deine set-Statements im do-Zweig syntaktisch falsch (s.o.). Weiterhin bezieht sich die Prüfung von "&&" auf den RC der letzten Anweisung: also das 1. set vor dem 2. set: wenn das OK war, wird das zweite set ausgeführt. :idea:
cu
Narses
avoid - Do 19.06.14 17:47
danke für eure hinweise und Infos.
so klappt es besser, und jetzt kann ich auch nach vollziehen was da passiert.
was die frage an geht, wozu ich so etwas brauche ...
hab einen Windows 8.1 Rechner der auf der onboard Netzwerkkarte immer mal wieder den betrieb einstellt.
ich will mit der Batchdatei die nächsten tage mal mit loggen wann die Verbindung verschwindet
und dann mit den Systemereignissen vergleichen.
Am Treiber liegt's nicht und an der Hardware auch nicht weil eine gesteckte Karte diese Probleme nicht macht.
mal sehen ob das nur zu bestimmten Zeiten vor kommt.
danke auf jeden fall.
----nachtrag----
Narses in dem von dir geposteten Code ist aber auch ein Syntaxfehler. ;)
Richtig: "Zeit= - %%i"
Falsch: Zeit=" - %%i"
wenn man das " hinter das = setzt wie bei dir,
bekommt man in anzeige und log ein " hinter den Inhalt von %Erfolg%
und auch hinter den Inhalt von %Zeit%.
das ist optisch eher unschön.
ich hab es jetzt so:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| @echo off set ip=192.168.178.1 set logdatei=c:\test set logextension=.txt
:start set Erfolg=Fehler for /f "tokens=7 delims==< " %%i in ('ping -n 1 %IP%^|findstr "TTL"') do set "Zeit= - %%i" && set Erfolg=OK echo %IP% - %date%-%time% - %Erfolg%%Zeit% >>%logdatei%_%date%%logextension% cls echo Ping zur IP %IP% gestartet. echo Aufzeichnung nach %logdatei% aktiv. echo Zum beenden Strg+C verwenden. echo ------------------------------------------- echo %date%-%time% - %Erfolg%%Zeit% echo: IF "%Erfolg%" == "Fehler" ( echo ) goto start |
hab auch noch nen beep bei Fehler rein gemacht.
hinter dem letzten echo muss das ASCII Zeichen für BEL sitzen (ALT + 7), das macht dann den denn Beep.
Gruß.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!