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 :

Modifier du texte dans un fichier .reg


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2016
    Messages : 4
    Par défaut Modifier du texte dans un fichier .reg
    Bonjour,
    Dans le cadre de mon travail, je suis amené à remplacer des postes de travail. Je transfert le profil utilisateur de l'ancien poste vers le nouveau via l'assistant de transfert intégré dans Windows. Cela fonctionne plutôt bien sauf pour l'une des chose essentielle: le profil outlook. Je sais comment le faire manuellement mais j'aimerais automatiser cette procédure dont voici la description:
    -1- j'exporte le clé de registre suivante
    REG EXPORT HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles (pour office 2003 à 2010)
    REG EXPORT HKCU\Software\Microsoft\Office\15.0\Outlook\Profiles (pour office 2013)
    REG EXPORT HKCU\Software\Microsoft\Office\16.0\Outlook\Profiles (pour office 2016)

    -2-Comme la version d'office du nouveau poste n'est jamais la même que sur l'ancien poste, je dois modifier dans le fichier exporté les chemins avant de re-inporter
    exemple: si je passe d'outlook 2013 à 2016 je dois modifier dans le fichier .reg tous les chemins HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles par HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Profiles

    Je cherche donc à créer un fichier de commande qui sera capable de remplacer du texte dans un fichier .reg

    Je vous remercie d'avance pour votre aide

  2. #2
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Salut,

    Crée un fichier Remplace.bat

    Remplace.bat

    Code : 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
    
    set "$Fichier=test.reg"
    
    (for /f "delims=" %%a in ('type "%$Fichier%"') do (
      set "$ligne=%%a"
      set "$ligne=!$ligne:%~1=%~2!
      echo !$ligne!)
    )>sortie.reg
    et lançe le de cette manière :

    remplace.bat 15.0 16.0

    Ça va te créer sortie.reg avec les valeurs modifiées


  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2016
    Messages : 4
    Par défaut
    Bonjour sachadee,
    tout d'abord merci de intéresser à mon problème. Je viens de tester et ça fonctionne en partie, ça remplace correctement le 15.0 par 16.0 mais à la sortie, le contenu n'est plus le même et il y a du texte manquant sur pas mal de lignes et les saut de ligne sont supprimé. Je mets en exemple le format du texte avant et apres pour que tu puisse te rendre compte.

    Avant modification:

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles]

    [HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\Outlook]

    [HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\Outlook\022be5022ec66642b03134de4f3602]
    "01023414"=hex:4e,49,54,41,f9,bf,b8,01,00,aa,00,37,d9,6e,00,00
    "001f300a"=hex:6d,00,73,00,70,00,73,00,74,00,2e,00,64,00,6c,00,6c,00,00,00
    "001f3d13"=hex:7b,00,36,00,34,00,38,00,35,00,44,00,32,00,00,32,00,2d,00,43,\
    00,32,00,41,00,43,00,2d,31,00,31,00,44,00,31,00,2d,00,41,00,44,00,33,00,\
    45,00,2d,00,31,00,30,00,41,00,30,00,43,00,39,00,31,00,00,43,00,39,00,43,\


    et après modification:

    Windows Registry Editor Version 5.00
    [HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Profiles]
    [HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Profiles\Outlook]
    [HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Profiles\Outlook\022be5022ec66642b03134de4f3602]
    "01023414
    "001f300a
    "001f3d13
    00,32,00,41,00,43,00,2d,31,00,31,00,44,00,31,00,2d,00,41,00,44,00,33,00,\
    45,00,2d,00,31,00,30,00,41,00,30,00,43,00,39,00,31,00,00,43,00,39,00,43,\


    D'autre part, pour la conversion des anciennes version d'outlook, il ne suffit pas de remplacer 15.0 par 16.0 mais Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles par Office\16.0\Outlook\Profiles. J'ai testé pour voir ma la ça par en sucette .
    aurais tu d'autres idées?

  4. #4
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Je crois que le plus simple pour toi reste :


    Remplace.bat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @echo off&cls
    if #%1#==## Goto:Erreur
    if #%2#==## Goto:Erreur
    powershell -Command "(gc test.reg) -replace '%1', '%2' | Out-File -encoding ASCII sortie.reg"
    Echo OK
    exit/b
    
    :Erreur
    Echo Manque Argument !!!
    et de nouveau tu le lançes :

    Remplace.bat "15.0" "16.0"


  5. #5
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Office-Conversion.vbs
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    Option Explicit
    Const Titre = "Conversion fichiers (.reg) Profiles Outlook"
    Const ForReading = 1
    Const ForWriting = 2
    Const TriStateUseDefault = -2
    Dim sInfile,sOutfileREG,oFSO,Ws,Folder,Contents
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set Ws = CreateObject("Wscript.Shell")
    If (WScript.Arguments.Count > 0) Then
        sInfile = WScript.Arguments(0)
            If LCase(oFSO.GetExtensionName(sInfile)) <> "reg" Then 
                MsgBox "ATTENTION ! ! !" & vbcr &_
                "Pour utiliser ce programme il faut glisser et déposer un fichier avec l'extension (.reg ) sur ce script pour le convertir ",vbExclamation,Titre
                Wscript.Quit()
            End If    
    Else
        MsgBox "ATTENTION ! ! !" & vbcr &_
        "Pour utiliser ce programme il faut glisser et déposer un fichier avec l'extension (.reg ) sur ce script pour le convertir ",vbExclamation,Titre
        WScript.Quit
    End If
     
    'Nom du dossier de la conversion
    Folder = GetFilenameWithoutExtension(sInfile) & "_Office-Conversion"
    'Création du dossier de la conversion
    If Not oFSO.FolderExists(Folder) Then
        oFSO.CreateFolder(Folder)
    End If    
    sOutfileREG = Folder & "\" & GetName(sInfile) & ".reg" 
     
    If oFSO.FileExists(sOutfileREG) Then
        oFSO.DeleteFile(sOutfileREG)
    End If
     
    Contents = ReadFile(sInfile,"all")
    Contents = Replace(Contents,"15.0","16.0")
    Contents = Replace(Contents,"Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles","Office\16.0\Outlook\Profiles")
    Call WriteFile(Contents,sOutfileREG)
    '*********************************************************************
    Function ReadFile(path,mode)
        Const ForReading = 1
        Dim objFSO,objFile,i,contents
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFile = objFSO.OpenTextFile(path,ForReading,-2)
        If mode = "byline" then
            Dim arrFileLines()
            i = 0
            Do Until objFile.AtEndOfStream
                Redim Preserve arrFileLines(i)
                strLine = objFile.ReadLine
                strLine = Trim(strLine)
                If Len(strLine) > 0 Then
                    arrFileLines(i) = strLine
                    i = i + 1
                    ReadFile = arrFileLines
                End If    
            Loop
            objFile.Close
        End If
        If mode = "all"  Then
            contents = objFile.ReadAll
            ReadFile = contents
            objFile.Close
        End If
    End Function
    '*****************************************************************
    'Fonction pour écrire le résultat dans un fichier texte
    Sub WriteFile(strText,File)
        Dim fs,ts 
        Const ForAppending = 8
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set ts = fs.OpenTextFile(File,ForAppending,True)
        ts.WriteLine strText
        ts.Close
    End Sub
    '**********************************************************************************************
    Function DblQuote(Str)
        DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '**********************************************************************************************
    Function GetFilenameWithoutExtension(ByVal FileName)
      Dim Result, i
      Result = FileName
      i = InStrRev(FileName, ".")
      If ( i > 0 ) Then
        Result = Mid(FileName, 1, i - 1)
      End If
      GetFilenameWithoutExtension = Result
    End Function
    '**********************************************************************************************
    Function GetName(Path)
    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    GetName = fso.GetBaseName(path)
    End Function
    '**********************************************************************************************
    Folder-Multi-Conversion.bat
    Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    @ECHO OFF
    Title Conversion des fichiers de type (.reg^) Profiles Outlook
    Mode con cols=70 lines=5
    color 0A 
    echo.
    IF [%1] EQU [] Goto:Error
    CD /D "%~1"
    2>nul cd "%~1" && Goto:Conversion || Goto:Error
     
    :Conversion
    FOR %%f IN (*.reg) DO (echo. & echo      Conversion du fichier "%%f" ... & Cscript /NoLogo %~dp0Office-Conversion.vbs "%%f" & Cls & echo.)
    Start "" explorer "%~1"
    Exit
     
    :Error
    Color 0c
    echo.
    ECHO    Il faut glisser et deposer un dossier sur ce programme batch 
    Timeout /T 6 /NoBreak >nul
    Exit

  6. #6
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2016
    Messages : 4
    Par défaut
    Bonjour sachadee,
    Ton nouveau code fonctionne bien et je t'en remercie

    @hackoofr, je viens de tester ton script et il me retourne une erreur
    Nom : 2016-02-21_16h49_28.png
Affichages : 1123
Taille : 14,2 Ko
    ton code m’intéresse aussi donc si tu peux voir d’où vient le problème je t'en serais très reconnaissant

    bonne journée à vous

Discussions similaires

  1. modifier une ligne dans un fichier texte
    Par junkie1986 dans le forum Tcl/Tk
    Réponses: 6
    Dernier message: 09/04/2013, 15h17
  2. modifier du texte dans un gros fichier texte
    Par christolb59 dans le forum MATLAB
    Réponses: 1
    Dernier message: 17/08/2012, 00h06
  3. [XL-2003] Modifier/Ajouter texte dans fichier .Txt sans effacer
    Par toukii dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/06/2009, 09h21
  4. Modifier un enregistrement dans un fichier texte
    Par Ludo75 dans le forum Langage
    Réponses: 4
    Dernier message: 10/05/2008, 00h05
  5. Modifier un texte dans les fichiers d'un répertoire
    Par Azenet dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 09/01/2008, 12h43

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