[Batch]Operation sur adresse IP

Résolu
juroks Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   -  
manelsousse Messages postés 63 Statut Membre -
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. Xavstarblues Messages postés 10585 Date d'inscription   Statut Contributeur Dernière intervention   1 858
     
    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
    2
    1. HostOfSeraphim Messages postés 7340 Statut Contributeur 1 609
       
      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).

      0
      1. Xavstarblues Messages postés 10585 Date d'inscription   Statut Contributeur Dernière intervention   1 858 > HostOfSeraphim Messages postés 7340 Statut Contributeur
         
        vi aussi, voir aussi possible avec %CD% si c'est a exécuter depuis une clé pour conserver le fichier après.
        0
  2. Xavstarblues Messages postés 10585 Date d'inscription   Statut Contributeur Dernière intervention   1 858
     
    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
    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    on peut faire comme ça avec une variable:
    for /f "usebackq delims=. tokens=1,2,3,4" %%i in (`echo %IP%`) do ( set IP1=....
    0
  4. juroks Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   7
     
    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 !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Xavstarblues Messages postés 10585 Date d'inscription   Statut Contributeur Dernière intervention   1 858
     
    De rien.
    0
  7. Ro20
     
    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
    0
  8. manelsousse Messages postés 63 Statut Membre
     
    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];
    0
  9. Ro20
     
    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
    
    
    0
  10. manelsousse Messages postés 63 Statut Membre
     
    je connais pas sur batch mais cette solution je l'etulise en php
    0