[Batch]Operation sur adresse IP

Résolu
juroks Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   -  
manelsousse Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -
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 !

9 réponses

Xavstarblues Messages postés 10019 Date d'inscription   Statut Contributeur Dernière intervention   1 856
 
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
HostOfSeraphim Messages postés 6750 Date d'inscription   Statut Contributeur Dernière intervention   1 608
 
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
Xavstarblues Messages postés 10019 Date d'inscription   Statut Contributeur Dernière intervention   1 856 > HostOfSeraphim Messages postés 6750 Date d'inscription   Statut Contributeur Dernière intervention  
 
vi aussi, voir aussi possible avec %CD% si c'est a exécuter depuis une clé pour conserver le fichier après.
0
Xavstarblues Messages postés 10019 Date d'inscription   Statut Contributeur Dernière intervention   1 856
 
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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
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

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

Posez votre question
Xavstarblues Messages postés 10019 Date d'inscription   Statut Contributeur Dernière intervention   1 856
 
De rien.
0
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
manelsousse Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
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
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
manelsousse Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
je connais pas sur batch mais cette solution je l'etulise en php
0