[Batch]Operation sur adresse IP

Résolu/Fermé
juroks Messages postés 197 Date d'inscription vendredi 2 février 2007 Statut Membre Dernière intervention 9 mai 2022 - 31 mars 2009 à 12:20
manelsousse Messages postés 59 Date d'inscription lundi 10 mars 2008 Statut Membre Dernière intervention 18 août 2009 - 16 juin 2009 à 17:43
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 !
A voir également:

9 réponses

Xavstarblues Messages postés 10019 Date d'inscription mercredi 22 août 2007 Statut Contributeur Dernière intervention 28 décembre 2019 1 851
31 mars 2009 à 12:47
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 jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 607
31 mars 2009 à 12:49
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 mercredi 22 août 2007 Statut Contributeur Dernière intervention 28 décembre 2019 1 851 > HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016
31 mars 2009 à 12:53
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 mercredi 22 août 2007 Statut Contributeur Dernière intervention 28 décembre 2019 1 851
31 mars 2009 à 12:30
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
31 mars 2009 à 13:16
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 vendredi 2 février 2007 Statut Membre Dernière intervention 9 mai 2022 7
31 mars 2009 à 13:37
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 mercredi 22 août 2007 Statut Contributeur Dernière intervention 28 décembre 2019 1 851
31 mars 2009 à 13:56
De rien.
0
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 lundi 10 mars 2008 Statut Membre Dernière intervention 18 août 2009
16 juin 2009 à 17:06
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
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 lundi 10 mars 2008 Statut Membre Dernière intervention 18 août 2009
16 juin 2009 à 17:43
je connais pas sur batch mais cette solution je l'etulise en php
0