[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. je connais pas sur batch mais cette solution je l'etulise en php
    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. 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

          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. 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. 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. 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