68145
Goto Top

Ping in XXX.txt schreiben aber bitte nicht die Ping-Statistik...

Hi

Habe folgendes kleines Script gebastelt:


@echo off
ECHO.
cd\

goto time

:time

time /t >> D:\Pings.txt

goto ping

:ping
ping -n 1 139.174.155.128 >> D:\Pings.txt

goto time



Der Inhalt der Textdatei sieht dann so aus:


12:53

Ping wird ausgefhrt fr 139.174.155.128 mit 32 Bytes Daten:

Antwort von 139.174.155.128: Bytes=32 Zeit<1ms TTL=128


Ping-Statistik fr 139.174.155.128:

Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0 (0% Verlust),

Ca. Zeitangaben in Millisek.:

Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms


12:53

Ping wird ausgefhrt fr 139.174.155.128 mit 32 Bytes Daten:

Antwort von 139.174.155.128: Bytes=32 Zeit<1ms TTL=128


Ping-Statistik fr 139.174.155.128:

Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0 (0% Verlust),

usw.



Sieht doof aus, oder? Das einzige, was ich benötige, sind diese Zeilen und eventuelle Fehlermeldungen;


12:53

Ping wird ausgefhrt fr 139.174.155.128 mit 32 Bytes Daten:

Antwort von 139.174.155.128: Bytes=32 Zeit<1ms TTL=128


12:54

Ping wird ausgefhrt fr 139.174.155.128 mit 32 Bytes Daten:

Antwort von 139.174.155.128: Bytes=32 Zeit<1ms TTL=128


12:55

Ping wird ausgefhrt fr 139.174.155.128 mit 32 Bytes Daten:

Zeitüberschreitung...



Ist es also möglich das Schreiben des Pingergebnisses in die Textdatei einzuschränken und zu sagen;"nur die ersten drei Zeilen schreiben bidde" oder muss ich das nachträglich machen? Wie würdet ihr das ganze lösen? Sorry, bin blutiger Anfänger... =)

gruß, der pepper, und bitte nich wieder so viel geflame, bin gaanz firedlich =)...

Content-Key: 94117

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

Printed on: April 27, 2024 at 03:04 o'clock

Member: bastla
bastla Aug 11, 2008 at 11:24:06 (UTC)
Goto Top
Hallo doctor-pepper!

Versuch es so:
@echo off
:time
time /t >> D:\Pings.txt
ping -n 1 139.174.155.128|findstr "Bytes" >> D:\Pings.txt  
goto :time
Genauer wird die Zeitangabe übrigens, wenn Du
echo %time% >> D:\Pings.txt
in Zeile 3 verwendest.

[Edit] Fehlermeldungen werden so zwar "verschluckt", aber Du kannst die Liste der Suchbegriffe nach "findstr" noch erweitern, also etwa
ping -n 1 139.174.155.128|findstr "Bytes berschreitung" >> D:\Pings.txt  
Aus Vereinfachungsgründen (wegen des Umlautes) wird im Beispiel von "Zeitüberschreitung" nur ein signifikanter Teil verwendet.
[/Edit]

Grüße
bastla
Mitglied: 68145
68145 Aug 11, 2008 at 13:32:20 (UTC)
Goto Top
hey danke!!! so funktioniert es perfekt;

@echo off
ECHO.
cd\

goto time

:time

echo %time% >> c:\pings.txt

goto ping


:ping

ping -n 1 139.174.155.128|findstr "Bytes berschreitung" >> c:\pings.txt

goto time
Member: bastla
bastla Aug 11, 2008 at 13:36:21 (UTC)
Goto Top
Hallo doctor-pepper!

Wenn es Dir so genügt, kann ich mir den Hinweis, dass sich das Ganze sinnvoll auf 5 Zeilen (siehe oben) reduzieren ließe, eigentlich sparen ... face-wink

Grüße
bastla

P.S.: Bitte beim nächsten Batch zum Posten -Tags verwenden.
Mitglied: 68145
68145 Aug 11, 2008 at 14:36:16 (UTC)
Goto Top
hehe

ja eventuell wäre das doch ganz hilfreich ;)

ich hab allerdings gleich die nächste frage:
ich habe ausprobiert, nur die fehlermeldungen ("Zielhost nicht erreichbar" und "Zeitüberschreitung") als bedingung für das schreiben in die TXT einzufügen, um wirklich nur diese meldungen UND den zeitpunkt abzufangen.


@echo off
ECHO.
cd\
@echo pinglogger [log unter c:\ping.txt]
pause
@echo Bitte IP eingeben:
set /p ip=
echo %time% >> c:\pings.txt
goto ping
:ping
ping -n 1 %ip%|findstr "berschreitung nicht" >> c:\pings.txt
goto time
:time
echo %time% >> c:\pings.txt
goto ping


Was letztlich dabei rauskommt ist ein riesiger Zahlenmüll, denn die Uhrzeiten werden ja trotzdem in die TXT geschrieben, egal ob nun erfolgreich gepingt wurde oder nicht.
Wie bekomme ich es hin, dass die Zeit nur dann geschrieben wird, wenn auch die Bedingung für das Schreiben der Pingfehler erfüllt ist???

Das würde mein Skript jetzt echt perfekt machen, ;)
Member: bastla
bastla Aug 11, 2008 at 14:50:52 (UTC)
Goto Top
Hallo doctor-pepper!

Dann wäre es doch sinnvoll, jeweils nur eine Zeile zu erzeugen, etwa:
@echo off & setlocal
set "Log=c:\ping.txt"  

echo\
echo pinglogger [log unter %Log%]
pause
echo Bitte IP eingeben:
set /p ip=
echo Log fuer %ip% >> "%Log%"  
echo\ >> "%Log%"  

:ping
set "Zeit=%time%"  
for /f "delims=" %%i in ('ping -n 1 %ip%^|findstr "berschreitung nicht"') do echo %Zeit%: %%i >> "%Log%"  
goto :ping
Wenn Du übrigens die Zeile 9 so schreibst:
echo Log fuer %ip% > "%Log%"  
wird eine neue Datei "c:\ping.txt" erstellt (und eine ev bereits vorhanden dadurch gelöscht).

Grüße
bastla

P.S.: Zum Abschließen der Code-Darstellung ist ein End-Tag erforderlich (siehe ) ...
Mitglied: 68145
68145 Aug 11, 2008 at 15:13:58 (UTC)
Goto Top
okay, das ist jetzt wirklich perfekt. werd mir den code morgen nochmal genauer ansehen (dieses for /f "delims=", alles sehr rätselhaft), damit ich auch was dabei gelernt hab. ;) VIELEN DANK!