Bonjour
comme j'ai vu que tu voulais apprendre à programmer avec AutoIt:
Je te propose de faire ca avec les composants COM de windows, sachant que bien sur AutoIt sait les utiliser.
Ton fichier est un fichier XML, microsoft a créer un composant installé sur tous les windows qui permet la manipulation des fichiers XML, création, lecture modification.
Le parcours d'un fichier XML se fait avec la syntaxe Xpath, qui comme souvent plusieurs chemin mène à Rome.
Pour ton fichier XML, le Xpath de la chaine à modifier: $XPath = ""
Code : Tout sélectionner
; Création de l'objet et ouverture du XML
Global $PathXML = "Paths.xcu"
Global $xmlDoc = ObjCreate("Msxml2.DOMDocument.6.0")
With $xmlDoc
.setProperty("SelectionNamespaces", "xmlns:oor='http://openoffice.org/2001/registry'")
.load($PathXML)
EndWith
ConsoleWrite($xmlDoc.xml & @LF)
;~ Selection de la node avec XPath
Global $XPath = "//*/prop[@oor:name='WritePath']/value"
Global $Node = $xmlDoc.SelectSingleNode($XPath)
;~ Lecture de la valeur, propriété text de la node
Global $Path = $Node.text
ConsoleWrite($Path & @LF)
Global $DriveOld = StringMid($Path, 9, 2)
ConsoleWrite($DriveOld & @LF)
;~ mise à jour de la valeur
$Node.text = StringReplace($Path, $DriveOld, StringLeft(@ScriptDir, 2))
ConsoleWrite($Node.text & @LF)
;~ Ecriture/sauvegarde du fichier xml
$xmlDoc.save($PathXML)
ConsoleWrite($xmlDoc.xml & @LF)
;~ Même chose, je restaure la valeur, ici sans passer par XPath, on compte les enfants et on choisis le 1er
Global $Node = $xmlDoc.documentElement.firstChild.firstChild.firstChild.firstChild
Global $Path = $Node.text
ConsoleWrite($Path & @LF)
Global $Drive = StringLeft(@ScriptDir, 2)
ConsoleWrite($Drive & @LF)
$Node.text = StringReplace($Path, $Drive, $DriveOld)
ConsoleWrite($Node.text & @LF)
$xmlDoc.save($PathXML)
ConsoleWrite($xmlDoc.xml & @LF)
Plus simple, plus sur et tu pourras même lire et écrire plusieurs éléments dans ton fichier.
Explication du XPath, tu en trouveras des exemples sur le net, mais dans ce cas je choisis la 1ère node qui s'appelle "prop", dont un attribut s'appelle oor:name dont la valeur est 'WritePath', puis je sélection un enfant qui s'appelle "value", à ce moment je suis sur le noeud (la node $Node)
Code : Tout sélectionner
Global $XPath = "//*/prop[@oor:name='WritePath']/value"
Global $Node = $xmlDoc.SelectSingleNode($XPath)
<value>file:///F:/LiberKey/MyDocuments</value>
, $Node.text me donne le contenue texte de cette node. Je t'invite à visiter le site microsoft sur la doc de msxml, tu dois même avoir le fichier d'aide sur ton micro "xmlsdk4.chm".
Ensuite aprés ca il n' y a pas de gestion des erreurs, lecture des attributs, création etc, j'ai trouvé une UDF que j'ai bcp modifié pour utiliser les fichiers xml mais c'est pas encore finalisé.