Batch incrémentation adresse ip ping

Résolu/Fermé
Alex - 10 oct. 2014 à 22:28
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 11 oct. 2014 à 15:55
Bonsoir,
étant en BTS SIO, je cherche à faire un fichier batch sous windows. Dans celui si je doit pouvoir sélectionner une plage d'adresse ip (avec la commande SET) et ensuite pinger tout les adresses ip de la plage (par exemple toutes les adresses ip de 192.168.1.20 à 192.168.1.75) puis enfin mettre les adresses IP qui répondent dans un fichier et celle qui ne réponde pas dans un autre fichier (avec la commande ERROLEVEL).
Mon réelle problème dans ce fichier batch est l'incrémentation de l'adresse IP, et la saisie de la plage (Je ne sais pas si je doit saisir les 4 octets d'un coup ou alors saisir chaque octet dans une variable différent)
Merci d'avance pour votre aide, Cordialement Alexandre.

6 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
11 oct. 2014 à 08:13
hello
lire la 1ère valeur et la dernière avec set /p
et utiliser une boucle: for /L %%a in (%min%, 1, %max%) ...
1
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
11 oct. 2014 à 12:35
essayer
echo saisiez les 3 premiers octets de la premiere adresse ip comme ceci XXX.XXX.XXX
set /P oct1=
echo puis le 4eme octet de la premiere adresse ip
set /p oct4=
echo enfin le 4eme octet de la derniere adresse ip
set /P oct5=
for /L %%a in (%oct4%, 1, %oct5%) do (
ping %oct1%.%%a -n 3 >NUL
if %errorlevel% EQU 0 (
echo %oct1%.%%a >> ok.txt
) else (
echo %oct1%.%%a >> bad.txt
)

)
1
Bonjour et merci de votre réponse.
J'ai actuellement ceci :
@echo off
echo saisiez les 3 premiers octets de la premiere adresse ip comme ceci XXX.XXX.XXX
set /P oct1=  
echo puis le 4eme octet de la premiere adresse ip
set /p oct4=
echo enfin le 4eme octet de la derniere adresse ip
set /P oct5=
for /L %%a in (%oct4%, 1, %oct5%) do ping %oct1%.%%a

Comme vous pouvez le voir, je doit saisir le 4ème octet de chaque adresse séparément. Avez vous un moyen pour incrémenter l'adresse taper comme ceci : 192.168.1.20 à l'adresse taper ainsi : 192.168.1.30 par exemple ?
En fin j'aimerai savoir comment inséré la commande ERRORLEVEL dans ce fichier bat (si elles répondent les adresses seront marquées dans ok.txt et si elles ne répondent pas elles seront écrites dans bad.txt)
Merci d'avance pour votre aide, Alexandre !
0
Merci pour la réponse, mais lorsque je fait ceci, toutes les adresses ip qu'elles puissent être pinger ou non sont misent dans le fichier ok
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J'ai trouver ceci :
@echo off
echo saisiez les 3 premiers octets de la premiere adresse ip comme ceci XXX.XXX.XXX
set /P oct1=  
echo puis le 4eme octet de la premiere adresse ip
set /p oct4=
echo enfin le 4eme octet de la derniere adresse ip
set /P oct5=
for /L %%a in (%oct4%, 1, %oct5%) do (
 ping %oct1%.%%a | find "TTL" >nul
  if errorlevel == 1 (
 echo %oct1%.%%a >> bad.txt
 ) else (
   echo %oct1%.%%a >> ok.txt
 )
)

pause</code>Cela fonctionne parfaitement, j'aimerai savoir maintenant si je peut le faire sans séparé le 4ème octet du reste de l'adresse ip lors la saisie ?
Cordialement, Alexandre
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
11 oct. 2014 à 15:55
essayer
setlocal enabledelayedexpansion
echo saisiez les 3 premiers octets de la premiere adresse ip comme ceci XXX.XXX.XXX
set /P oct1=
echo puis le 4eme octet de la premiere adresse ip
set /p oct4=
echo enfin le 4eme octet de la derniere adresse ip
set /P oct5=
for /L %%a in (%oct4%, 1, %oct5%) do (
ping %oct1%.%%a -n 3 >NUL
if !errorlevel! EQU 0 (
echo %oct1%.%%a >> ok.txt
) else (
echo %oct1%.%%a >> bad.txt
)

)
0