Pingen Sie jede IP-Adresse in einer Textdatei?

8

Angenommen, ich habe hier eine Textdatei mit einigen Computernamen (jede Zeile == 1 Name):

computerA
computerB
computerC
...

Ist es möglich, eine Batchdatei zu erstellen, die alle diese Computer pingt? Und tatsächlich ist ein Ping eine große Ausgabe. Ich brauche das nicht time oder andere Informationen; Ich möchte nur wissen, erreichbar oder nicht. Irgendwelche Ideen?


Es funktioniert jetzt! Das Problem war wie gesagt fox, dass ich meine Batch-Datei als benannt habe ping.bat und Ping ist auch ein Befehl, so dass dies nicht geklappt hat. Ich habe meine Batch-Datei umbenannt und jetzt ist alles in Ordnung.

sabisabi
quelle
1
Schaue auf die for Befehl, insbesondere der Datei-Parsing-Modus.
Damien_The_Unbeliever

Antworten:

10

Versuche dies:

@echo off
for /f "delims=" %%a in (computerlist.txt) do ping -n 1 %%a >nul && (echo %%a ok) || (echo %%a failed to respond) 
pause

Wenn Sie einen Dateinamen oder Pfad mit Leerzeichen oder ungeraden Zeichen verwenden müssen, verwenden Sie statt (computerlist.txt) benutzen ( ' type "c:\folder\computer file.txt" ' )

foxidrive
quelle
Ich sehe, dass der cmd in Kürze auftaucht und dann ist er weg. Selbst mit Pause oder Schlaf am Ende sehe ich keine Ausgabe.
sabisabi
Probieren Sie den überarbeiteten Code aus, der die OK-Antwort enthält.
Keine Veränderung, das ist komisch. Ich kopiere genau den Code (ok, ich ändere den Dateinamen), den Sie dort gepostet haben, in eine Textdatei - & gt; Ich speichere dies als .bat und starte danach die .bat-Datei - & gt; cmd auftauchen und dann ist es ohne Ausgabe gegangen. Ich verwende Win XP, könnte dies ein Problem sein?
sabisabi
Ihr Pfad \ Dateiname enthält wahrscheinlich Leerzeichen. Anstatt (computerlist.txt) use ('tippe "c: \ folder \ computer file.txt"')
3
Das ist dein Fehler. Denken Sie immer daran, dass Sie beim Benennen einer Batch-Datei den Namen eines Befehls vermeiden sollten. In Ihrem Fall führt der Ping-Befehl in der Batchdatei die Ping-Batchdatei und nicht den Ping-Befehl aus.
4
@Echo OFF

For /F "Usebackq Delims=" %%# in (
    "List.txt"
) do (
    Echo+
    Echo [+] Pinging: %%#

    Ping -n 1 "%%#" 1>nul && (
        Echo     [OK]) || (
        Echo     [FAILED])
)

Pause&Exit

Ausgabe:

[+] Pinging: www.google.com
    [OK]

[+] Pinging: ffff
    [FAILED]
ElektroStudios
quelle
Wenn ich meine .bat starte, sehe ich die Ausgabe [+] Pinging: computerS, aber dann verschwindet das Fenster.
sabisabi
Sie haben mein Drehbuch wie es ist ohne mehrere Änderungen überprüft?
ElektroStudios
Nun, ich habe den Namen der Datei geändert, aber das war's
sabisabi
@sabisabi: Starten Sie die Batch-Datei "manuell" über eine vorhandene Eingabeaufforderung, damit Sie die Fehlermeldung lesen können. Doppelklicken Sie nicht auf Batch-Dateien, die Sie testen müssen.
a_horse_with_no_name
@a_horse_with_no_name, wenn ich die .bat-Datei über cmd (ping.bat) starte - & gt; es gibt kein neues fenster und mein cmd schließt sich ohne nachricht
sabisabi
0

Ich habe ein Ping-Tool erstellt, das mithilfe einer Konfigurationsdatei festlegt, welche IP-Adressen gepingt werden sollen. Es erstellt bis zu 12-cmd-Fenster und platziert sie nebeneinander auf Ihrem Bildschirm. Jedes Fenster hat eine Beschreibung im Titel, auch aus der Konfigurationsdatei.

Es erkennt automatisch Ihre Bildschirmgröße, unterstützt jedoch derzeit nur 1920x1080 und 1600x900. Sie können jedoch manuell weitere Auflösungen erstellen. Siehe credits.txt für Informationen.

HellFires Pingtest v1.0

Lord HellFire
quelle
0

Sie können versuchen, das von mir entwickelte Tool - ccmd - zu verwenden, um bei ähnlichen Aufgaben zu helfen. Es führt einen beliebigen Terminalbefehl für eine Reihe von Zielen aus. Ziele können in einer CSV-Textdatei wie der folgenden angegeben werden:
#dies ist eine Kommentarzeile
#Ziel, Beschreibung, Befehl (Standard - Ping)
8.8.8.8
1.1.1.1
#in unter Befehl {target} wird durch 8.8.4.4 ersetzt
8.8.4.4, Google DNS, ping -n 1 -w 500 {target}
192.168.1.0/30, mein Subnetz
bbc.com, das ist die bbc news site

Speichern Sie die obige Datei in der Datei name.txt und zeigen Sie mit der Option -s auf das Skript. Standardmäßig wird der Befehl ping ausgeführt, wenn kein anderer Befehl angegeben wurde.
Führen Sie es mit:
ccmd.exe -s name.txt -b 10 -c 30
enthüllt diese Ausgabe: https://i.stack.imgur.com/23zxQ.png

Skript geschrieben auf Python, aber hat cmd.exe-Version, die direkt auf Windows ausgeführt werden kann. Standardmäßig werden die Befehlsprotokolle im Ordner ./LOG/ gespeichert.

Quelle: https://github.com/apraksim/ccmd

apraksim
quelle
0

Eine Alternative, die Sie sich ansehen möchten, ist die Verwendung von PowerShell:

cls;
ForEach ($targetComputer in (Get-Content C:\installs\computerlist.txt)) {
    if (Test-Connection -ComputerName $targetComputer -Count 1 -Quiet) {
        "$targetComputer - Ping OK"
    } else {
        "$targetComputer - Ping FAIL"
    }
}

Ersetzen Sie den Inhalt von C: \ Installs \ Computer List.txt und Sie sind weg :)

enter image description here

Fazer87
quelle