Modifier un ficher

Résolu
Jordi.D Messages postés 60 Statut Membre -  
Jordi.D Messages postés 60 Statut Membre -
Bonsoir a tous je voudrais savoir comment modifier la ligne d'un fichier .reg svp

3 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    En VBScript

    Fichier à renommer en cequetuveux.vbs
    
    
     FileName = "test.reg"
       FindStr = """name""" & "=" & """BAM201""" 
      ReplaceWith = """Name"""  & "=" & """BAM20x""" 
    
    'Read source text file
    FileContents = GetFile(FileName)
    
    'replace all string In the source file
    dFileContents = replace(FileContents, FindStr, ReplaceWith, 1, -1, 1)
    
    'Compare source And result
    if dFileContents <> FileContents Then
      'write result If different
      WriteFile FileName, dFileContents
    
      Wscript.Echo "Replace done."
      If Len(ReplaceWith) <> Len(FindStr) Then 'Can we count n of replacements?
        Wscript.Echo _
        ( (Len(dFileContents) - Len(FileContents)) / (Len(ReplaceWith)-Len(FindStr)) ) & _
        " replacements."
      End If
    Else
      Wscript.Echo "Text :" & FindStr & "  non présent dans le fichier"
    End If
    
    'Read text file
    function GetFile(FileName)
      If FileName<>"" Then
        Dim FS, FileStream
        Set FS = CreateObject("Scripting.FileSystemObject")
          on error resume Next
          Set FileStream = FS.OpenTextFile(FileName)
          GetFile = FileStream.ReadAll
      End If
    End Function
    
    'Write string As a text file.
    function WriteFile(FileName, Contents)
      Dim OutStream, FS
    
      on error resume Next
      Set FS = CreateObject("Scripting.FileSystemObject")
        Set OutStream = FS.OpenTextFile(FileName, 2, True)
        OutStream.Write Contents
    End Function
    

    1
    1. Jordi.D Messages postés 60 Statut Membre
       
      Super merci beaucoup d'avoir pris le temps de m'aider
      0
    2. Jordi.D Messages postés 60 Statut Membre
       
      Et j'aurais une dernière question si je met une condition Tant que FindStr différent de BAM201 faire BAM+1 cela est t'il possible ?
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > Jordi.D Messages postés 60 Statut Membre
         
        pas clair ta demande....
        Le code que je t'ai donné... fais un rechercher remplacer d'une chaine précise...
        Si tu dois remplacer plusieurs fois la chaine ( en remplaçant par la même valeur partout...) il suffit de jouer avec le paramètre qui sert à ça :
        https://www.w3schools.com/asp/func_replace.asp

        Par contre.... si tu as plusieurs recherches à faire , plus de l'incrémentation... il faut complètement modifier le code.
        Car si tu regardes bien... je ne fais pas une lecture ligne par ligne.. ni de boucle...
        Moi j'ai répondu à la question que tu as posé..... là c'est totalement autre chose.
        D'où l'importance de correctement (et complètement) expliquer ses besoins dès le départ.

        Je te propose d'ouvrir une nouvelle discussion dans laquelle tu donneras un exemple de fichier COMPLET et dans laquelle tu expliqueras CLAIREMENT le résultat attendu.
        0
    3. Jordi.D Messages postés 60 Statut Membre
       
      Oui j'ai compris ca je te remercie quand même de ton aide bonne soirée à toi et encore merci pour le temps que tu ma accordée
      0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    Ca reste un fichier text... donc n'importe quel editeur de text te permet de le faire.
    https://www.commentcamarche.net/contents/433-fichier-reg

    Aucun rapport avec un langage de programmation.. c'est juste la modification d'un fichier windows..

    Par contre..si tu ne sais pas exactement ce que tu fais au niveau du registre de ton windows.. tu risque de tout casser... attention !m
    0
    1. Jordi.D Messages postés 60 Statut Membre
       
      Bonjour,
      Désoler je me reprend effet je cherche automatiser le changement dans mon ficher à l'aide d'un script mais je ne sais pas comment faire
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Modifier quoi ?
      Le fichier contient quoi ?
      Dans quel langage ?
      0
      1. Jordi.D Messages postés 60 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Il faut modifier le contenue d'une ligne ( On connaît déjà le numéro de la ligne) ,
        Je te mets le contenue du fichier ici
        "; The RegSave Utility created this file
        ; This utility was written by Paul Hurford, Symbol EMEA TS
        ; You use the utility at your own risk
        ;
        ; Template File : \Application\RegSave.Reg
        ; Program Version : 2.20.01 May xx xxx
        ; File created 1/11/2003 00:27:58
        ;

        [HKEY_LOCAL_MACHINE\Ident]
        "Name"="BAM201"

        a l'aide d'un fichier .bat ou autre je souhaiterais modifier le "BAM201" en BAM20x"
        0
  3. Jordi.D Messages postés 60 Statut Membre
     
    Après quelque recherche j'ai trouvé ce code
    @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
    


    EDIT : Ajout des balises de code

    Le problème c'est qu'il efface les commentaires et les sauts de lignes
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      C'est en effet le type de script que le t'aurai proposé...
      Par contre... y a t'il une obligation absolue d'utiliser un batch ?
      Un Vbscript semblerait plus adapté.
      Voir un powershell...
      0
    2. Jordi.D Messages postés 60 Statut Membre
       
      Non ce n'est pas une obligation
      Par contre je n'y connaît rien en PowerShell
      0