Sript Batch comparaison de 2 ip

Sript Batch comparaison de 2 ip - Divers - Programmation

Marsh Posté le 20-10-2016 à 23:36:55    

Bonjour/Bonsoir à tous  
 
Je viens vers vous car je bloque sur mon script batch  
 
Voici ce que j'aimerais faire :
 
Je voudrais comparer 2 ip , dans un premier temps le script lance un ip config et copie le résultat dans un fichier IP.txt
 
avec une boucle for je récupère la ligne IPV4 et la copie dans un fichier iprécupéré .txt et la copie dans une variable IP1
 
Ensuite dans une boucle infinie le script relance un ipconfig et copie dans le fichier IP.txt en écrasant ce qu'il contenait
 
Ensuite le script récupère la ligne IPV4 et la stock dans la variable IP2
 
Puis il compare IP1 et IP2 , si les valeurs sont différentes alors il copie la nouvelle IPV4 soit IP2 dans le fichier iprécupéré.txt sans écraser ce qu'il y avait avant  
Sinon il recommence au niveau du 2 eme ipconfig
 
Ma problématique ben c'est que ça ne marche pas  :lol:  , le programme ne tourne pas en boucle  
 
Voici ce que j'ai tenté de faire  
 
 
ipconfig > C:\Users\Justbio\Documents\test.txt
for /f "tokens=* delims=" %%a in ('type C:\Users\Justbio\Documents\test.txt^| Find /i "Adresse IPv4"') do echo %%a >> C:\Users\Justbio\Documents\test2.txt
for /f "tokens=* delims=" %%a in ('type C:\Users\Justbio\Documents\test.txt^| Find /i "Adresse IPv4"') do set %%a=%ip1%
 
@echo off
:boucle
 
ipconfig > C:\Users\Justbio\Documents\test.txt
for /f "tokens=* delims=" %%a in ('type C:\Users\Justbio\Documents\test.txt^| Find /i "Adresse IPv4"') do set %%a=%ip2%  
 
 
 
if %ip1% <> %ip2% ;
do echo  ip2 >> C:\Users\Justbio\Documents\test2.txt ;
 
else ""
 
 
goto boucle


Message édité par biohazdarx le 20-10-2016 à 23:40:38

---------------
FEED
Reply

Marsh Posté le 20-10-2016 à 23:36:55   

Reply

Marsh Posté le 21-10-2016 à 20:04:22    

Ton if a l'air étrange. Fais un if /? en ligne de commande et regarde ce que ça dit.

Reply

Marsh Posté le 21-10-2016 à 22:11:50    

J'ai fais quelques modif d'après ton infos  
 
Mais ça ne tourne toujours pas en boucle :/
 
@echo off
:init
ipconfig > C:\Users\Justbio\Documents\test.txt
for /f "tokens=* delims=" %%a in ('type C:\Users\Justbio\Documents\test.txt^| Find /i "Adresse IPv4"') do echo %%a >> C:\Users\Justbio\Documents\test2.txt
for /f "tokens=* delims=" %%b in ('type C:\Users\Justbio\Documents\test.txt^| Find /i "Adresse IPv4"') do set ip1=%%b
:boucle
set ip1=0  
set ip2=0
ipconfig > C:\Users\Justbio\Documents\test.txt
for /f "tokens=* delims=" %%c in ('type C:\Users\Justbio\Documents\test.txt^| Find /i "Adresse IPv4"') do set ip2=%%c  
if %ip1% NEQ %ip2%  %ip2% >> C:\Users\Justbio\Documents\test2.txt
if %ip1% == %ip2% goto boucle


Message édité par biohazdarx le 22-10-2016 à 00:45:20

---------------
FEED
Reply

Marsh Posté le 22-10-2016 à 11:06:48    

Bon, j' ai pas tout pige dans ton histoire, mais un truc comme celui ci devrait coller.
 

Code :
  1. @echo off
  2. REM On vide le fichier de log  
  3. copy /Y NUL "iplog.txt" > NUL
  4. REM identificateur de la ligne, a adapter selon le langage
  5. set ip_string="Adresse IPv4"
  6. REM pour ecrire l'adresse au premier passage dans loop
  7. set ip_old=""
  8. :loop
  9. REM On recupere la premiere valeur avec Adresse IPv4 sur la ligne et on la colle dans ip
  10. for /f "usebackq tokens=2 delims=:" %%f in (`ipconfig ^| findstr /c:%ip_string%`) do (
  11.    set ip=%%f
  12.    goto :next
  13. )
  14. :next
  15. REM pour virer l'espace initial
  16. set ip=%ip:~1%
  17. REM Note: c'est a adapter si on a plusieurs adaptateurs reseau avec des adresses ipv4  
  18. REM pour ne parser que quand on a rencontre la ligne avec le bon adaptateur
  19. REM on compare et on ecrit si differentes, puis on memorise la nouvelle valeur
  20. if not %ip_old% == %ip% (
  21.    echo %ip% >> "iplog.txt"
  22.    set ip_old=%ip%
  23. )
  24. REM delai variable avant de re-tester, ici 60 secondes
  25. REM Si timeout n' est pas dispo sur votre environnement, adapter avec un astuce (ping...)  
  26. timeout /t 60 > NUL
  27. goto :loop


 
A+,


Message édité par gilou le 22-10-2016 à 11:08:33

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 22-10-2016 à 12:29:37    

Merci beaucoup gilou ! ton script rempli exactement les conditions que je recherchais !
Mais j'avoue être un poil déçu de n'avoir pas pu réussir seul :/


---------------
FEED
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed