Ping chaque adresse IP dans un fichier texte?

9

Disons que j'ai ici un fichier texte avec des noms d'ordinateur (chaque ligne == 1 nom):

computerA
computerB
computerC
...

Est-il possible de créer un fichier batch qui envoie une requête ping à tous ces ordinateurs? Et en fait, un ping est une grosse sortie. Je n'ai pas besoin de la timeou d'autres informations; Je voudrais juste savoir accessible ou non. Des idées?


Ça marche maintenant! Le problème était comme Fox l'a dit, que j'ai nommé mon fichier batch comme ping.batet ping est également une commande, donc cela n'a pas fonctionné. J'ai renommé mon fichier batch et maintenant tout va bien.

sabisabi
la source
1
Regardez la forcommande, en particulier le mode d'analyse de fichiers.
Damien_The_Unbeliever

Réponses:

12

Essaye ça:

@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 vous devez utiliser un nom de fichier ou un chemin avec des espaces ou des caractères impairs, au lieu d' (computerlist.txt)utiliser( ' type "c:\folder\computer file.txt" ' )

Foxidrive
la source
Je vois que le cmd apparaît très rapidement et puis c'est parti. Même avec une pause ou un sommeil à la fin, je ne vois aucune sortie.
sabisabi
Essayez le code modifié ci-dessus qui inclut la réponse OK.
Pas de changement du tout, c'est bizarre. Je copie exactement le même code (ok je change le nom du fichier) comme vous l'avez posté dans un fichier texte -> Je l'enregistre en tant que .bat et après cela je démarre le fichier .bat -> cmd surgit et puis c'est parti sans toute sortie. J'utilise win xp, cela pourrait-il être un problème?
sabisabi
Votre chemin \ nom de fichier contient probablement des espaces. Au lieu de (computerlist.txt), utilisez ('type "c: \ folder \ computer file.txt"')
3
C'est ton erreur. N'oubliez pas que lorsque vous nommez un fichier de commandes, vous devez éviter d'utiliser le nom d'une commande. Dans votre cas, la commande ping à l'intérieur du fichier de commandes exécute le fichier de commandes ping et non la commande 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

Production:

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

[+] Pinging: ffff
    [FAILED]
ElektroStudios
la source
Lorsque je démarre mon .bat, je vois la sortie [+] Pinging: computerA, mais la fenêtre disparaît.
sabisabi
Vous avez vopié mon script tel quel sans plusieurs changements?
ElektroStudios
Eh bien, j'ai changé le nom du fichier, mais c'est tout
sabisabi
@sabisabi: lancez le fichier batch "manuellement" à partir d'une invite de commande existante vous pourrez lire le message d'erreur. Ne "double-cliquez" pas sur les fichiers batch que vous devez tester.
a_horse_with_no_name
@a_horse_with_no_name si je démarre le fichier .bat via cmd (ping.bat) -> il n'y a pas de nouvelle fenêtre et ma cmd se ferme sans aucun message
sabisabi
1

Une alternative que vous voudrez peut-être envisager est d'utiliser 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"
    }
}

Remplacez le contenu de C: \ Installs \ ComputerList.txt et vous êtes absent :)

entrez la description de l'image ici

Fazer87
la source
0

J'ai créé un outil de ping qui utilise un fichier de configuration pour définir les IP à envoyer et crée jusqu'à 12 fenêtres cmd et les place côte à côte sur votre écran. Chaque fenêtre a une description dans le titre, également à partir du fichier de configuration.

Il détecte automatiquement la taille de votre écran, mais ne prend actuellement en charge que 1920x1080 et 1600x900. Vous pouvez cependant créer plus de résolutions manuellement. Voir credits.txt pour plus d'informations.

HellFires Pingtest v1.0

Lord HellFire
la source
0

Vous pouvez essayer d'utiliser l'outil que j'ai développé - ccmd - pour aider à des tâches similaires, il exécute n'importe quelle commande de terminal contre un certain nombre de cibles, les cibles peuvent être données dans un fichier texte csv comme:
#ceci est une ligne de commentaire
#cible, description, commande (par défaut - ping)
8.8.8.8
1.1.1.1
#in ci-dessous, la commande {target} sera remplacée par 8.8.4.4
8.8.4.4, google DNS, ping -n 1 -w 500 {target}
192.168.1.0/30, my sous-réseau
bbc.com, c'est le site de nouvelles bbc

enregistrez le fichier ci-dessus dans name.txt et pointez le script avec l'option -s, par défaut, il exécutera la commande ping si aucune autre commande n'est donnée.
Exécutez-le avec:
ccmd.exe -s name.txt -b 10 -c 30
révèle cette sortie: https://i.stack.imgur.com/23zxQ.png

script écrit sur python mais avec la vesion ccmd.exe, qui peut être exécuté directement sur Windows. Par défaut, la commande de détails détaille la sortie enregistrée dans le dossier ./LOG/.

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

apraksim
la source