Rechercher et renommer une chaine de caractère complexe dans un fichier texte

Utilisateur anonyme - 23 juin 2011 à 12:37
 Utilisateur anonyme - 23 juin 2011 à 13:25
Bonjour à tous,

Aujourd'hui je m'adresse à vous car je suis totalement perdu. Depuis peu j'essaye d'automatiser certaines tâches par des scripts, mais je dois avouer que je n'y connais rien.

Il se trouve que dans mon entreprise nous utilisons un logiciel (sur une cinquantaine de postes) qui utilise les listes blanches et noires. Il faudrait que j'arrive à modifier une suite de ces valeurs sans toucher aux autres. Car il me faudrait un temps monstre pour tout faire à la main, que je n'ai pas. De plus, tous les ordis ont des listes blanches et noires différentes.

mais malgré mes recherches et les nombreux posts à ce sujet je ne suis arrivé à rien...

En réalité, ce que je veux faire c'est :
1* extraire la clé de registre
2* si la valeur existe, la modifier en la remplaçant seulement, sans porter atteinte aux autres
3* puis la réinjecter
4* relancer le service

Je sais tout faire sauf le 2*.

Oui c'est toujours la même série de nombre que je veux changer, s'il existe, qui correspond à un numéro d'autorisation d'accès (généré à partir du numéro de série de la carte mère) de l'ancien ordi sortant par celui du nouvel ordi.

Je ne sais pas si je suis assez compréhensible...

J'ai dans mon fichier texte (Text.txt) :

"Whitelist"=hex(7):32,00,34,00,37,00,37,35,00,39,39,00,39,00,31,00,39,00,00,00,\
36,00,36,00,35,00,32,00,37,00,34,00,36,00,34,00,35,00,00,00,32,00,34,00,37,\
00,39,00,00,00

Le code de l'ancien ordi : 00,00,00,\
36,00,36,

à remplacer par : 34,00,37,\
00,39,00,

Avec plein de saut à la ligne...

J'ai trouvé un script posté par PCPT, mais comme je débute que depuis un mois... Mon niveau n'est pas assez suffisant pour bien le comprendre... Je ne sais pas ou insérer les valeurs à chercher et à remplacer...


Private Function ChangeWords(sWordsToRemove, sWordsToChange, sFile)

If FileExists(sFile) Then
' ouvre le fichier
Dim sBuffer
sBuffer = ReadDataFromFile(sFile)
' ligne à changer existe?
If InStr(1, sBuffer, sWordsToRemove) > 0 Then
sBuffer = Replace(sBuffer, sWordsToRemove, sWordsToChange)
WriteDataToFile sFile, sBuffer
ChangeWords = True
End If
End Function


Function ReadDataFromFile(sPathFile)
' reader
Dim oFSO
Set oFSO = CreateObject("Scripting.fileSystemObject")
' fichier
Dim oFile
Set oFile = oFSO.GetFile(sPathFile)
' stream
Dim oStream
Set oStream = oFile.OpenAsTextStream(ForReading)

' retour
ReadDataFromFile = oStream.ReadAll
' nettoyage
oStream.Close
Set oStream = Nothing
Set oFile = Nothing
Set oFSO = Nothing
End Function

Function FileExists(sPathFile)
' reader
Dim oFSO
Set oFSO = CreateObject("Scripting.fileSystemObject")

' retour
FileExists = oFSO.FileExists(sPathFile)

' nettoyage
Set oFSO = Nothing
End Function

Sub WriteDataToFile(sPathFile, sData)
' reader
Dim oFSO
Set oFSO = CreateObject("Scripting.fileSystemObject")
' fichier : chemin, 2 pour écrire (et écraser), True pour forcer la création du fichier
Dim oFile
Set oFile = oFSO.openTextFile(sPathFile, 2, True)
' écriture
oFile.Write sData
' nettoyage
oFile.Close
Set oFile = Nothing
Set oFSO = Nothing
End Sub


Si une âme généreuse pouvait m'aider...

Merci...

2 réponses

ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
23 juin 2011 à 12:47
C'est là :
sBuffer = Replace(sBuffer, sWordsToRemove, sWordsToChange) 

le deuxième paramètre est la chaîne à changer, le 3ème est la chaîne qui la remplace.
Ces deux paramètres sont à passer à :
Private Function ChangeWords(sWordsToRemove, sWordsToChange, sFile)


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Utilisateur anonyme
23 juin 2011 à 13:25
Donc si j'ai bien compris, je dois faire :

Private Function ChangeWords(sWordToRemove, sWordsToChange, sFile)
sWordToRemove=00,00,00,\ 36,00,36,
sWordsToChange=34,00,37,\ 00,39,00, 
sFile=Text.txt


Ou l'executer ainsi .

replace.vbs cscript "00,00,00,\ 36,00,36," "34,00,37,\ 00,39,00" "Text.txt"

???

Je sais c'est débile mais je n'y comprends vraiment rien... Désolé...
0