Eseguire il ping di tutti gli indirizzi IP in un file di testo?


9

Diciamo che ho qui un file di testo con alcuni nomi di computer (ogni riga == 1 nome):

computerA
computerB
computerC
...

È possibile creare un file batch che esegue il ping di tutti questi computer? E in realtà un ping è un grande output. Non ho bisogno delle timealtre informazioni; Vorrei solo sapere raggiungibile o no. Qualche idea?


Sta lavorando adesso! Il problema era come ha detto Fox, che ho chiamato il mio file batch come ping.bate anche ping è un comando, quindi non ha funzionato. Ho rinominato il mio file batch e ora va tutto bene.


1
Guarda il forcomando, in particolare la modalità di analisi dei file.
Damien_The_Unbeliever,

Risposte:


12

Prova questo:

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

Se devi usare un nome file o un percorso con spazi o caratteri dispari, invece di (computerlist.txt)utilizzare( ' type "c:\folder\computer file.txt" ' )


Vedo che il cmd sta spuntando molto presto e poi è sparito. Anche con la pausa o il sonno alla fine non vedo alcun output.
sabisabi,

Prova il codice modificato sopra che include la risposta OK.

Nessun cambiamento, questo è strano. Copio esattamente lo stesso codice (ok, cambio il nome del file) che hai pubblicato lì in un file di testo -> lo salvo come file .bat e successivamente avvio il file .bat -> cmd saltando fuori e poi se ne va senza qualsiasi uscita. Sto usando Win XP, potrebbe essere un problema?
sabisabi,

Il percorso \ nomefile probabilmente contiene spazi. Invece di (computerlist.txt) usa ('type "c: \ folder \ computer file.txt"')

3
Questo è il tuo errore Ricorda sempre che quando assegni un nome a un file batch dovresti evitare di usare il nome di un comando. Nel tuo caso il comando ping all'interno del file batch sta eseguendo il file batch ping e non il comando ping.

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

Produzione:

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

[+] Pinging: ffff
    [FAILED]

Quando avvio il mio .bat vedo l'output [+] Pinging: computerA, ma poi la finestra scompare.
sabisabi,

Hai pubblicizzato il mio copione così com'è senza diverse modifiche?
ElektroStudios,

Bene, ho cambiato il nome del file, ma è tutto
sabisabi,

@sabisabi: avvia il file batch "manualmente" da un prompt dei comandi esistente, sarai in grado di leggere il messaggio di errore. Non "fare doppio clic" sui file batch che è necessario testare.
a_horse_with_no_name

@a_horse_with_no_name se inizio il file .bat tramite cmd (ping.bat) -> non c'è una nuova finestra e il mio cmd si chiude da solo senza alcun messaggio
sabisabi

1

Un'alternativa che potresti voler guardare è usare 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"
    }
}

Sostituisci i concorrenti di C: \ Install \ ComputerList.txt e sei via :)

inserisci qui la descrizione dell'immagine


0

Ho creato uno strumento ping che utilizza un file di configurazione per impostare quali ip eseguire il ping e crea finestre fino a 12 cmd e le posiziona fianco a fianco sullo schermo. Ogni finestra ha una descrizione nel titolo, anche dal file di configurazione.

Rileva automaticamente le dimensioni dello schermo, ma attualmente supporta solo 1920x1080 e 1600x900. Tuttavia, puoi creare più risoluzioni manualmente. Vedi credits.txt per informazioni.

HellFires Pingtest v1.0


0

Puoi provare a usare lo strumento che ho sviluppato - ccmd - per aiutare con compiti simili, esegue qualsiasi comando terminale su un numero di target, obiettivi possono essere dati in un file di testo CSV come:
#questa è una riga di commento
# target, descrizione, comando (impostazione predefinita - ping)
8.8.8.8
1.1.1.1
#in sotto il comando {target} verrà sostituito con 8.8.4.4
8.8.4.4, google DNS, ping -n 1 -w 500 {target}
192.168.1.0/30, my subnet
bbc.com, questo è il sito di notizie bbc

salva il file sopra in name.txt e punta lo script con l'opzione -s, per impostazione predefinita eseguirà il comando ping se non viene fornito nessun altro comando. Eseguilo
con:
ccmd.exe -s name.txt -b 10 -c 30
rivela questo output: https://i.stack.imgur.com/23zxQ.png

script scritto su Python ma con vesion ccmd.exe, che può essere eseguito direttamente su Windows. Per impostazione predefinita, i dettagli dei registri dei comandi vengono salvati nella cartella ./LOG/.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.