IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Afficher une chaine du Registre. Soucis


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 24
    Par défaut Afficher une chaine du Registre. Soucis
    Bonsoir à tous!
    J'ai un souci sur l'affichage "désirée" d'une chaîne de caractères extraite du Registre.

    J'ai réalisé une extraction d'une partie du Registre dans un fichier texte posé sur le Bureau.
    Je scanne ensuite ce fichier texte afin de retrouver le chemin complet d'une adresse IP. (NameServer ou DhcpNameServer). Ors dans le tri j'obtiens encore trop d'informations. Toutes les chaînes avec leurs CLSID m'affichent l'occurence "NameServer" et c'est là que je deviens zinzin car je n'arrive pas à filtrer.

    En détails:
    je cible cette chaîne:
    [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\]
    Je voudrais connaître toutes les CLSID ainsi que leurs "valeurs" NameServer = IP recherchée.

    En utilisant ce batch j'ai la réponse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo off
    for /f "delims=" %%i in ('type "cible.txt" ^|findstr /i /r "{*-*-*-*-*} NameServer"') do echo %%i >>resultat.txt
    notepad resultat.txt
    pause
    cible.txt est mon fichier contenant l'exportation complète de HKLM...
    resultat.txt contient toutes les clefs ainsi que toutes les valeurs de NameServer. J'ai donc éliminer toutes les autres informations.
    {*-*-*-*-*} m'affiche la CLSID.

    Mon problème maintenant:
    Avec ce script je n'arrive pas à éliminer par exemple les chaînes contenant une CLSID avec une valeur nulle comme celle-ci --> "NameServer"=""

    J'ai essayer d'intégrer en variable l'IP recherchée en utilisant ^| find /i /v, (/v m'affichera toutes les valeurs autres que la variable, mais existe-t-il un commutateur afin d'afficher que l'occurence recherchée?).

    Je n'arrive pas à obtenir la chaîne+CLSID+IP voulue!!!

    Avez vous des idées?

  2. #2
    Membre émérite
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Par défaut
    Salut tcherrio, bienvenue sur le forum.

    Tu devrais peut-être afficher le contenu ton fichier "cible.txt" (éventuellement, y changer les adresses IP si tu veux) car son rendu peut varier d'une méthode d'exportation à l'autre.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 24
    Par défaut
    Salut maxim_um
    Merci de ton accueil et je te retourne mes voeux pour cette nouvelle année.

    Dans le cas qui m'intéresse j'ai vraiment un problème de filtrage justemment après l'extraction du Registre.

    Je prends ce batch par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo off
    for /f "tokens=1,2,3 delims=     " %%a in ('type "cible.txt" ^| find /i /v "{*-*-*-*-*} NameServer"') do echo %%a >> test.txt
    notepad test.txt
    pause
    Voici une partie de cible.txt s'affichant dans test.txt:
    [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{06451803-C860-457D-9CCC-632A5BC006D7}]
    "NameServer"="212.26.13.250"
    "DhcpNameServer"="212.26.13.250 212.26.13.249"
    [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{1AE008E3-3F28-4AE9-B8EF-E75572203E70}]
    "NameServer"=""

    [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{31AF80D3-295D-4465-B237-E4546FF4B6A9}]
    "DhcpNameServer"=""

    [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{35536230-8200-4173-911C-5121D1DCC4C1}] [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{38B691CC-7779-41DB-BF44-E8E842FDCBF2}]
    "NameServer"=""
    "DhcpNameServer"="212.26.13.253 212.26.13.252"
    Les IP et CLSID sont là hypothétiques
    En gras les informations que je ne voudrais pas faire apparaître.

    Maintenant si j'intégre "212.26" en variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @echo off
    set var=85.255   
    for /f "tokens=1 delims=     " %%a in ('type "cible.txt" ^| findstr /i /r "%var%"') do echo %%a >> test.txt
    notepad test.txt
    pause
    Résultats:
    "NameServer"="212.26.13.250"
    "DhcpNameServer"="212.26.13.250 212.26.13.249"
    "DhcpNameServer"="212.26.13.253 212.26.13.252"
    là il me manque la chaîne...

    Soit j'ai la chaîne complète mais avec trop d'informations, soit je n'obtiens que les valeurs...

    Aurais-tu une piste?

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
    ::pour toutes les interfaces on apelle la 'fonction' cmd
    for /f "delims=" %%a in ('reg query HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces ^| findstr /i Interfaces\') do call :cmd "%%a"
    pause
    exit
    :cmd
    ::key=chemin registre avec clsid
    set key=%~1
    ::clsid= on recupere les 38 dernieres caractère de key (donc le clsid)
    set clsid=%key:~-38%
    reg query "%key%" /v NameServer > NUL 2> NUL
    ::si la valeur de registre "NameServer" existe on continu
    if %errorlevel% EQU 0 for /f "tokens=3 delims=	" %%b in ('reg query "%key%" /v NameServer ^| findstr /i NameServer') do echo CLSID=%clsid% : DNS=%%b

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 24
    Par défaut
    Salut Blast Killer.
    Merci de ta participation à mon calvaire.

    Je comprends parfaitement tes lignes de commandes et cela ne doit pas être loin de la révélation. Lol

    Cependant je n'arrive pas à franchir "pause"??? et donc je n'atteins pas :cmd

    Symptômes:
    Reg query lance la recherche puis j'ai "pause" > ensuite la console se referme.
    J'ai supprimé "pause" et même déplacée dans :cmd et j'obtiens le même résultat.

    De ton côté tu accédes à Interfaces?

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Par défaut
    Quand tu lances ce code tel quel, est ce qu'il t'affiche ce que tu veux ?

    Cependant je n'arrive pas à franchir "pause"??? et donc je n'atteins pas :cmd
    :cmd est une sorte de sous programme que j'apelle via la ligne :
    for /f "delims=" %%a in ('reg query HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces ^| findstr /i Interfaces\') do call :cmd "%%a"

    Je passe en parametre la variable %%a (ici le chemin de registre) de la boucle for à la fonction :cmd qui récupere ce parametre et la stock dans une variable grace a cette ligne :
    :cmd
    set key=%~1

    Donc on a rien à faire dans la "fonction" :cmd si on lui donne pas de parametre, c'est normal qu'il y ai un pause et exit avant.
    Par contre, si le programme ne fait pas du tout ce que tu attends, c'est une erreur de code. Mais j'ai testé chez moi, et sa marche parfaitement...

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/04/2007, 16h42
  2. Réponses: 9
    Dernier message: 19/12/2006, 12h02
  3. Afficher une chaîne de caractères au boot
    Par ganply dans le forum Assembleur
    Réponses: 7
    Dernier message: 15/09/2006, 21h16
  4. [Débutant]Afficher une chaine de caractères
    Par cyrille2k5 dans le forum Oracle
    Réponses: 3
    Dernier message: 02/06/2006, 16h04
  5. afficher une chaine de caractères
    Par felicity dans le forum C
    Réponses: 12
    Dernier message: 21/12/2005, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo