[Batch]Operation sur adresse IP

Résolu
Bonjour,

Je souhaiterais manipuler une adresse IP

par exemple :

@echo off
cls
echo Saissir l'adresse IP
set /p IP=

et je voudrais faire en sorte que les quatres octets soient séparés

Exemple Si IP= 192.168.0.11

je voudrais obtenir

IP1 = 192
IP2= 168
IP3 =0
IP4= 11

je sais qui faut utiliser une boucle for mais je ne sais pas comment l'utiliser.

Voila Merci pour vos réponses !
Configuration: Windows XP
Internet Explorer 7.0

9 réponses

  1. Contributeur
    ok, je sais pas si il y a moyen de faire plus propre mais je passe par un fichier temporaire (qui est supprimé après.

    @echo off
    cls
    echo Saissir l'adresse IP
    set /p IP=
    echo %IP% >c:\temp.txt
    for /f "tokens=1,2,3,4 delims=." %%i in (c:\temp.txt) do set IP1=%%i& set IP2=%%j& set IP3=%%k& set IP4=%%l
    echo IP1=%IP1%
    echo IP2=%IP2%
    echo IP3=%IP3%
    echo IP4=%IP4%
    del c:\temp.txt
    pause
    1. Contributeur
      Pour faire un chouilla plus propre, tu peux utiliser la variable d'environnement %TEMP% pour créer le fichier temporaire dans un répertoire qui existe à coup sûr (tout le monde n'a pas son système sur C).

    2. Contributeur
      @HostOfSeraphimvi aussi, voir aussi possible avec %CD% si c'est a exécuter depuis une clé pour conserver le fichier après.
  2. Contributeur
    bonjour
    insere ca (apres set /p IP=)

    for /f "tokens=1,2,3,4 delims=." %%i in %IP% do set IP1=%%i& set IP2=%%j& set IP3=%%k& set IP4=%%l

    (pour etre sur que ca marche tu peux ajouter ca)
    echo %IP1
    echo %IP2
    echo %IP3
    echo %IP4
    pause

    EDIT; je viens de tester, il plante... je regarde ca
    1. Contributeur
      on peut faire comme ça avec une variable:
      for /f "usebackq delims=. tokens=1,2,3,4" %%i in (`echo %IP%`) do ( set IP1=....
      1. Merci merci

        j'ai repris ton code Xavstarblues et juste au lieu de faire c:\temp.txt je fais temp.txt ce qui me permet le mettre dans le dossier ou se trouve mon script.

        donc beau boulot sa m'aide vraiment pour la suite !

        je fais mon script de collecte SNMP et je suis en phase optimisation !

        merci encore !
        1. Bonjour

          Le premier script comporte 2 erreurs

          1/ Il ne faut pas utiliser IP comme variable car c'est une commande !
          2/ Il faut mettre la variable entre guillemets et parenthèses

          Donc l'utilisation d'un fichier temp.txt comme dans le second sript est inutile.

          Voici le script corrigé qui fonctionne :

          @echo off 
          cls 
          setlocal EnableDelayedExpansion
          
          ::  Exemple Si IP= 192.168.0.11 
          ::  Il ne faut pas utiliser IP comme variable
          ::  c'est une commande ! 
          
          echo Saisir l'adresse IP 
          set /p var= 
          
          FOR /f  "tokens=1,2,3,4 delims=." %%a in ("%var%") DO SET IP1=%%a&SET IP2=%%b&SET 
          
          IP3=%%c&SET IP4=%%d
          
          
          ::  Si la variable est definie l'afficher à l'écran
          If defined IP1 (echo L'IP 1 est : %IP1%)
          If defined IP2 (echo L'IP 2 est : %IP2%)
          If defined IP3 (echo L'IP 3 est : %IP3%)
          If defined IP4 (echo L'IP 4 est : %IP4%)
          
          pause 
          
          
          
          endlocal
          1. pour extraire les quatre IP appel la fonction explode comme ci
            $variable=explode(".",$adresseip)
            le point c'est le seperateur et $adresseip est votre adresse 125.92.92.11 ensuite pour l'affichage ecrivez :
            echo $variable[0];
            echo $variable[1];
            echo $variable[2];
            echo $variable[3];
            1. Bonjour Mr manelsousse

              Expode qui vient du PHP ne fonctionne en fichier batch .

              Je rectifie mon premier message qui à une erreur de tabulation dans la commande for:

              @echo off 
              cls 
              setlocal EnableDelayedExpansion
              
              ::  Exemple Si IP= 192.168.0.11 
              ::  Il ne faut pas utiliser IP comme variable
              ::  c'est une commande ! 
              
              echo Saisir l'adresse IP 
              set /p var= 
              
              FOR /f  "tokens=1,2,3,4 delims=." %%a in ("%var%") DO SET IP1=%%a&SET IP2=%%b&SETIP3=%%c&SET IP4=%%d
              
              
              
              If defined IP1 (echo L'IP 1 est : %IP1%)
              If defined IP2 (echo L'IP 2 est : %IP2%)
              If defined IP3 (echo L'IP 3 est : %IP3%)
              If defined IP4 (echo L'IP 4 est : %IP4%)
              
              pause 
              
              
              
              endlocal
              
              
              1. je connais pas sur batch mais cette solution je l'etulise en php