Batch incrémentation adresse ip ping

Résolu
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

  1. Contributeur
    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. Contributeur
      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 !
        1. 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
          1. 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
            1. Contributeur
              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
              )

              )