¿Hacer ping a cada dirección IP en un archivo de texto?

9

Digamos que tengo aquí un archivo de texto con algunos nombres de computadora (cada línea == 1 nombre):

computerA
computerB
computerC
...

¿Es posible crear un archivo por lotes que haga ping a todas estas computadoras? Y en realidad un ping es una gran salida. No necesito la timeu otra información; Solo me gustaría saber accesible o no. ¿Algunas ideas?


¡Está funcionando ahora! El problema fue como dijo Fox, que nombré mi archivo por lotes como ping.baty ping también es un comando, por lo que esto no funcionó. Cambié el nombre de mi archivo por lotes y ahora todo está bien.

sabisabi
fuente
1
Mire el forcomando, especialmente el modo de análisis de archivos.
Damien_The_Unbeliever

Respuestas:

12

Prueba esto:

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

Si tiene que usar un nombre de archivo o ruta con espacios o caracteres impares, en lugar de (computerlist.txt)usar( ' type "c:\folder\computer file.txt" ' )

Foxidrive
fuente
Veo que el cmd aparece muy pronto y luego desaparece. Incluso con pausa o sueño al final no veo ningún resultado.
sabisabi
Pruebe el código editado arriba que incluye la respuesta OK.
Ningún cambio en absoluto, esto es raro. Copio exactamente el mismo código (ok, cambio el nombre del archivo) que publicaste allí en un archivo de texto -> Lo guardo como un archivo .bat y después de eso inicio el archivo .bat -> cmd aparece y luego desaparece sin Cualquier salida. Estoy usando win xp, ¿podría ser un problema?
sabisabi
Su ruta \ nombre de archivo probablemente contiene espacios. En lugar de (computerlist.txt) use ('type "c: \ folder \ computer file.txt"')
3
Ese es tu error. Siempre recuerde que al nombrar un archivo por lotes, debe evitar usar el nombre de un comando. En su caso, el comando ping dentro del archivo por lotes está ejecutando el archivo por lotes de ping y no el 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

Salida:

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

[+] Pinging: ffff
    [FAILED]
ElektroStudios
fuente
Cuando inicio mi .bat veo la salida [+] Pinging: computerA, pero luego la ventana está desapareciendo.
sabisabi
¿Has copiado mi script tal como está sin varios cambios?
ElektroStudios
Bueno, cambié el nombre del archivo, pero eso es todo
sabisabi
@sabisabi: inicie el archivo por lotes "manualmente" desde un símbolo del sistema existente, podrá leer el mensaje de error. No haga doble clic en los archivos por lotes que tiene que probar.
a_horse_with_no_name
@a_horse_with_no_name si inicio el archivo .bat a través de cmd (ping.bat) -> no hay una nueva ventana y mi cmd se está cerrando sin ningún mensaje
sabisabi
1

Una alternativa que puede considerar es usar 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"
    }
}

Reemplace los contenidos de C: \ Installs \ ComputerList.txt y estará ausente :)

ingrese la descripción de la imagen aquí

Fazer87
fuente
0

Creé una herramienta de ping que usa un archivo de configuración para configurar qué ip hacer ping y crea ventanas de hasta 12 cmd y las coloca una al lado de la otra en su pantalla. Cada ventana tiene una descripción en el título, también del archivo de configuración.

Detecta automáticamente el tamaño de la pantalla, pero actualmente solo es compatible con 1920x1080 y 1600x900. Sin embargo, puede crear más resoluciones manualmente. Ver créditos.txt para más información.

HellFires Pingtest v1.0

Lord HellFire
fuente
0

Puede intentar usar la herramienta que desarrollé, ccmd, para ayudar con tareas similares, ejecuta cualquier comando de terminal contra varios objetivos, los objetivos se pueden dar en un archivo de texto csv como:
#esta es una línea de comentarios
#target, descripción, comando (predeterminado - ping)
8.8.8.8
1.1.1.1
#en el siguiente comando {target} se reemplazará con 8.8.4.4
8.8.4.4, google DNS, ping -n 1 -w 500 {target}
192.168.1.0/30, my subred
bbc.com, este es el sitio de noticias bbc

guarde el archivo anterior en name.txt y apunte el script hacia él con la opción -s, de forma predeterminada ejecutará el comando ping si no se proporciona ningún otro comando.
Ejecútelo con:
ccmd.exe -s name.txt -b 10 -c 30
revela esa salida: https://i.stack.imgur.com/23zxQ.png

script escrito en python pero tiene una versión ccmd.exe, que se puede ejecutar en Windows directamente. De manera predeterminada, el comando de detalles registra la salida guardada en la carpeta ./LOG/.

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

apraksim
fuente