Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
831 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Sript Batch comparaison de 2 ip

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sript Batch comparaison de 2 ip

n°2290476
biohazdarx
Posté le 20-10-2016 à 23:36:55  profilanswer
 

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
mood
Publicité
Posté le 20-10-2016 à 23:36:55  profilanswer
 

n°2290508
rat de com​bat
attention rongeur méchant!
Posté le 21-10-2016 à 20:04:22  profilanswer
 

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

n°2290518
biohazdarx
Posté le 21-10-2016 à 22:11:50  profilanswer
 

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
n°2290523
gilou
Modérateur
Modzilla
Posté le 22-10-2016 à 11:06:48  profilanswer
 

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é!  --
n°2290526
biohazdarx
Posté le 22-10-2016 à 12:29:37  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Sript Batch comparaison de 2 ip

 

Sujets relatifs
[batch] renommer fichier[Batch] création du'une tache via fichier .xml
Pause Script BatchExtraction d'une valeur d'un fichier via un batch
[BATCH] utiliser %%A et ignorer l'extension fichier (RESOLU)[BATCH] récupérer la liste des compilateurs
[BATCH] Problèmes IFlecture de fichier pour comparaison de contenu
Comparaison de bdd sous Excelscript batch désinstallation de logiciels 64 et 32 bits
Plus de sujets relatifs à : Sript Batch comparaison de 2 ip


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR