mini25
Goto Top

Batch Pingliste mit Log File

Hallo Leute!

Ich möchte gerne PC-Namen aus einem Textfile pingen. Ist der Ping erfolgreich, so soll in der Log Datei ein Eintrag erscheinen.

Bsp: PC12345 Ping erfolgreich


Hat der Ping nicht funktioniert, so soll kein eintrag in die Log-Datei geschrieben werden.

Bisher bin ich so weit gekommen:

for /f %%i in (C:\hostnames.txt) do (
alive /Repeat=8 /Timeout=3 %%i 
if %ERRORLEVEL% == 0 Goto error
if not %ERRORLEVEL% == 0 goto erfolg
:erfolg
echo %%i ping erfolgreich >> hallo.log goto ende
:error
echo fehler >> hallo.log goto ende
:ende
)
Mfg
Mini25


[Edit Biber] Code als Code formatiert und Beitrag nach Batch & Shell verschoben. [/Edit]

Content-Key: 111957

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

Ausgedruckt am: 29.03.2024 um 14:03 Uhr

Mitglied: bastla
bastla 20.03.2009 um 14:03:30 Uhr
Goto Top
Hallo Mini25!

Wenn nur bei Erfolg (=Errorlevel ungleich 0) ein Eintrag ins Log vorgenommen werden soll, könnte Folgendes reichen:
for /f %%i in (C:\hostnames.txt) do alive /Repeat=8 /Timeout=3 %%i || echo %%i ping erfolgreich>>hallo.log
Ansonsten sollte es auch so gehen:
for /f %%i in (C:\hostnames.txt) do (
    alive /Repeat=8 /Timeout=3 %%i 
    if ERRORLEVEL 1 goto :erfolg
    echo fehler >> hallo.log & goto :ende
    :erfolg
    echo %%i ping erfolgreich >> hallo.log goto ende
    :ende
)
Grüße
bastla
Mitglied: Mini25
Mini25 20.03.2009 um 15:12:32 Uhr
Goto Top
Hallo bastla!

Ich habe keine Ahnung wiesos nicht geht.

im Moment sieht mein Code so aus:

@echo off
for /f %%i in (C:\hostnames.txt) do ( 

set pcn=%%i

alive /Repeat=5 /Timeout=1 %%i  

if Errorlevel 0 goto erfolg 
echo fehler >> hallo.log
goto ende

:erfolg 
echo %pcn% ping erfolgreich >> hallo.log 
goto ende 

:ende 
echo fehler
)

Allerdings nimmt er da immer nur den ersten Wert aus der Liste. Die Schleife funktioniert noch nicht so richtig. Wenn bei

:ende nix mehr steht, so kommt ein Syntaxfehler


Ich wäre froh wenn ihr mir da etwas weiter helfen könnt.

Mfg
Mini25
Mitglied: bastla
bastla 20.03.2009 um 16:13:00 Uhr
Goto Top
Hallo Mini25!

Oben hattest Du noch Errorlevel 1 für den Erfolgsfall ...

Ein "if errorlevel 0" ist sinnlos, da immer zutreffend - die Abfrage bedeutet nämlich "if errorlevel >=0"; daher eher so:
@echo off & setlocal
for /f %%i in (C:\hostnames.txt) do ( 
    alive /Repeat=5 /Timeout=1 %%i  
    if Errorlevel 1 (echo fehler >> hallo.log) else (echo %%i ping erfolgreich >> hallo.log)
)
Alternativ dazu kannst Du die Zeilen 3 und 4 zusammenfassen zu
alive /Repeat=5 /Timeout=1 %%i || (echo fehler >> hallo.log) && (echo %%i ping erfolgreich >> hallo.log)
Grüße
bastla
Mitglied: 60730
60730 20.03.2009 um 16:14:21 Uhr
Goto Top
Servus,

leicht OT:
"alive" - bist du Kiss fan face-wink ? - bzw. welches Tool benutzt du denn?
"mini25" - wenn nicht kiss fan, dann Fan einer kleinen Kiste mit 12" Rädern?

Anyway - poste mal einen Schnippsel deiner C:\hostnames.txt - vielleicht liegt da der Hund begraben.


gruß