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 :

Comment rechercher une valeur dans la base de registre et la modifier [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 44
    Points : 19
    Points
    19
    Par défaut Comment rechercher une valeur dans la base de registre et la modifier
    Bonjour à tous,

    J'utilise reg query pour retrouver smtp.toto.fr dans les profiles Outlook.

    REG QUERY HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\ /F "smtp.toto.fr" /S

    Résultat :

    HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\Kerio\6f21a320bf943a46a93a2db48fcd46f6
    001e660c REG_SZ smtp.toto.fr

    HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\Kerio\de244060c6aa954388af1565843f1673
    001e660c REG_SZ smtp.toto.fr

    Fin de la recherche: 2 correspondance(s) trouvée(s).

    Comment remplacer smtp.toto.fr par mail.toto.fr ?

    Cdt,

    Elminio

  2. #2
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    tu dois utiliser "reg add" après avoir parsé les résultats, ça doit donner quelque chose comme ça (à tester).

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off
     
    for /f "delims=" %%a in ('REG QUERY HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\ /F "smtp.toto.fr" /S') do (
      for /f "tokens=12" %%b in ("%%a") do (
        if "%%c"=="REG_SZ" (
          for /f "tokens=9 delims=\\" %%A in ("%%b") do (
            reg add "%%b" /v %%A /t REG_SZ /d "mail.toto.fr"
          )
        )
      )
    )
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Bonjour InitSreen,

    J'ai testé le script et aucune modification ne s'applique.

    Comment vérifier le contenu des variables ?

    Cdt,
    Elminio

  4. #4
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    J'avais pas testé mais celui-la doit marcher sinon "echo %%a" ou echo "%%b" pour afficher les variables

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @echo off
    setlocal enabledelayedexpansion
     
    for /f "usebackq delims=" %%a in (`reg query "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles" /f "smtp.toto.fr" /s`) do (
      for /f "tokens=1,2" %%b in ("%%a") do (
        if "%%c"=="REG_SZ" (
          reg add "!currentkey!" /v %%b /t REG_SZ /d "mail.toto.fr"
        ) else (
          set "currentkey=%%a"
        )
      )
    )
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Malheureusement ça ne fonctionne pas et pas évident de testé ces boucles.

  6. #6
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Ce que tu me dit m'étonne, met la commande "echo" devant "reg add" et post ce que sa t'affiche sur le forum
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    En résultat de la commande j'ai "%%a était inattendu".

  8. #8
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Je comprend pas pourquoi, essaye les deux solutions suivantes

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @echo off
    setlocal enabledelayedexpansion
     
    for /f "usebackq delims=" %%a in (`reg query "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles" /f "smtp.toto.fr" /s`) do (
      for /f "tokens=1-2" %%b in ("%%~a") do (
        if "%%c"=="REG_SZ" (
          reg add "!currentkey!" /v %%b /t REG_SZ /d "mail.toto.fr"
        ) else (
          set "currentkey=%%a"
        )
      )
    )

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @echo off
    setlocal enabledelayedexpansion
     
    for /f "usebackq delims=" %%a in (`reg query "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles" /f "smtp.toto.fr" /s`) do (
      for /f "tokens=1-2" %%b in ('echo %%~a') do (
        if "%%c"=="REG_SZ" (
          reg add "!currentkey!" /v %%b /t REG_SZ /d "mail.toto.fr"
        ) else (
          set "currentkey=%%a"
        )
      )
    )
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Pas de changement, "%%a était inattendu".

  10. #10
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Je pas sais quoi te dire, chez moi ça marche. Tu es sur quel système.
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  11. #11
    Membre éclairé Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Points : 809
    Points
    809
    Par défaut
    Pour avoir plus d'informations, change:
    en
    et screenshot ce qui est affiché qu'on sache où est le problème.
    ________________________________________________________________
    N'oublie pas de faire une sauvegarde avant d'exécuter des scripts...
    Si j'ai ton problème, un petit fait toujours plaisir!
    ________________________________________________________________

  12. #12
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Résultat du dernier script :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo on & cls
    setlocal enabledelayedexpansion 
    for /F "usebackq delims=" %a in (`reg query "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles" /f "smtp.toto.fr" /s`) do (for /F "tokens=1-2" %b in ('echo %~a') do (if "%c" == "REG_SZ" (reg add "!currentkey!" /v %b /t REG_SZ /d "mail.toto.fr" )  else (set "currentkey=%a" ) ) ) 
    (for /F "tokens=1-2" %b in ('echo HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\Kerio\6f21a320bf943a46a93a2db48fcd46f6') do (if "%c" == "REG_SZ" (reg add "!currentkey!" /v %b /t REG_SZ /d "mail.toto.fr" )  else (set "currentkey=HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\Kerio\6f21a320bf943a46a93a2db48fcd46f6" ) ) ) 
    (if "" == "REG_SZ" (reg add "!currentkey!" /v HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\Kerio\6f21a320bf943a46a93a2db48fcd46f6 /t REG_SZ /d "mail.toto.fr" )  else (set "currentkey=HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\Kerio\6f21a320bf943a46a93a2db48fcd46f6" ) ) 
    (for /F "tokens=1-2" %b in ('echo     001e660c    REG_SZ    smtp.toto.fr') do (if "%c" == "REG_SZ" (reg add "!currentkey!" /v %b /t REG_SZ /d "mail.toto.fr" )  else (set "currentkey=    001e660c    REG_SZ    smtp.toto.fr" ) ) ) 
    (if "REG_SZ" == "REG_SZ" (reg add "!currentkey!" /v 001e660c /t REG_SZ /d "mail.toto.fr" )  else (set "currentkey=    001e660c    REG_SZ    smtp.toto.fr" ) ) 
    La valeur 001e660c existe. Voulez-vous la remplacer (Oui/Non) ?

  13. #13
    Membre éclairé Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Points : 809
    Points
    809
    Par défaut
    Essaye ceci:
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    reg add "!currentkey!" /f /v %%b /t REG_SZ /d "mail.toto.fr"
    /f Force l'écrasement de l'entrée de Registre existante, sans confirmation.
    ________________________________________________________________
    N'oublie pas de faire une sauvegarde avant d'exécuter des scripts...
    Si j'ai ton problème, un petit fait toujours plaisir!
    ________________________________________________________________

  14. #14
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 44
    Points : 19
    Points
    19
    Par défaut
    Test OK, merci InitSreen et devilsnake88 pour l'aide .

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour, (mode déterrage de topic=activé)

    Je me permet, milles excuses, car je n'arrive pas à faire fonctionner ce script sur une machine windows10 en exécutant le .bat en administrateur.

    Voici le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @echo on & cls
    setlocal enabledelayedexpansion
    pause
    for /f "usebackq delims=" %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY" /F "MonitorFunction1" /S') do (
    for /f "tokens=*" %%b in ('echo %%~a') do (
        if "%%c"=="REG_SZ" (
          reg add "!currentkey!" /f %%b /t REG_SZ /d "MonitorFunction2"
        ) else (
          set "currentkey=%%a"
        )
      )
    pause
    Je passe le premier "pause" et la fenêtre se referme.

    Merci par avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2000] Comment rechercher une valeur dans une table qui contient des paliers
    Par ClaudeLELOUP dans le forum Access
    Réponses: 16
    Dernier message: 13/07/2012, 16h43
  2. Réponses: 2
    Dernier message: 12/10/2009, 18h28
  3. Comment rechercher une donnée dans un base ?
    Par tibofo dans le forum Administration
    Réponses: 7
    Dernier message: 25/03/2009, 23h02
  4. [find] Comment rechercher une valeur dans une matrice
    Par VanessaDu67 dans le forum MATLAB
    Réponses: 6
    Dernier message: 06/06/2007, 14h55

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