Bonjour,
J'ose poster sur le forum, car il me semble bien avoir regardé partout mais sans succès.
Je débute avec AUtoIT et je souhaite éditer le fichier prefs.js de Firefox, afin de permettre à l'utilisateur via un GUI de changer les paramètres. (Ok c'est inutile mais ça me permet d'utiliser Autoit)
Je connais les differentes commandes qui permettent d'ouvrir, lire, ecrire sur un fichier, mais je n'arrive pas à trouver une info sur la recherche d'une séquence de caractères et écrire par dessus
par exemple la ligne user_pref("browser.startup.homepage", "http://www.google.fr");
Si une telle info est dejà indiquée dans le forum veuillez m'excusez pour ce post. Sinon mercide votre aide
[R] OPérations sur fichier
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] OPérations sur fichier
Modifié en dernier par spama le jeu. 24 mars 2011 12:03, modifié 1 fois.
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] OPérations sur fichier
Il n'y a pas de solution magique pour "écrire par dessus une chaine", pour cela, il vous faudra la casser et la reconstruire.
Les outils dont vous aurez besoin pour cela se trouvent en grande parti dans la section String Management de la doc.
Je ne sais pas comment est formé ce fichier, mais si il est du genre "une ligne, une info", vous pourrez déja utiliser StringSplit() avec la macro @CRLF
Les outils dont vous aurez besoin pour cela se trouvent en grande parti dans la section String Management de la doc.
Je ne sais pas comment est formé ce fichier, mais si il est du genre "une ligne, une info", vous pourrez déja utiliser StringSplit() avec la macro @CRLF
Signez ici
- sksbir
- Niveau 7

- Messages : 384
- Enregistré le : lun. 26 oct. 2009 17:57
- Localisation : Lyon
- Status : Hors ligne
Re: [..] OPérations sur fichier
bonjour
Le mieux (surtout en cas de modifications multiples ) consiste à charger le fichier dans un tableau à l'aide de _FileReadToArray, à faire les modifications dans le tableau, puis à réécrire le tout avec _FileWriteFromArray
Le mieux (surtout en cas de modifications multiples ) consiste à charger le fichier dans un tableau à l'aide de _FileReadToArray, à faire les modifications dans le tableau, puis à réécrire le tout avec _FileWriteFromArray
Re: [..] OPérations sur fichier
Merci bien pour ces informations.
Je vais me pencher là dessus. En attendant je mets le sujet sur [R] car comprendre toutes les fonctions, macros et les appliquer pour mes besoins va me prendre un peu de temps.
A bientôt
(j'aurai toujours un oeil sur le fofo
)
Je vais me pencher là dessus. En attendant je mets le sujet sur [R] car comprendre toutes les fonctions, macros et les appliquer pour mes besoins va me prendre un peu de temps.
A bientôt
(j'aurai toujours un oeil sur le fofo
Re: [R] OPérations sur fichier
Pour remplacer du texte, le plus simple est d'utiliser les expressions régulières (regular expression).
AutoIt le permet avec les fonctions : StringRegExpReplace et StringRegExp.
Pour remplacer la page de démarrage, ça donnerait quelque chose comme ça :
Je n'ai pas testé ce bout de code
mais ça devrait ressembler à ça.
AutoIt le permet avec les fonctions : StringRegExpReplace et StringRegExp.
Pour remplacer la page de démarrage, ça donnerait quelque chose comme ça :
Code : Tout sélectionner
; lire le fichier d'origine ligne par ligne
; pour chaque ligne, tester si la ligne contient le mot-clef, et créer une nouvelle ligne avec la nouvelle valeur
; écrire les lignes modifiées et non modifiées dans un fichier temporaire (plus facile pour le debug)
; remplacer le fichier d'origine par le fichier temporaire
; hypothèse : $line contient la ligne lue, $new_value contient la nouvelle valeur, $new_line est la ligne modifiée
$new_value = "www.google.fr"
If (StringRegExp($line, "user_pref(\"browser\.startup\.homepage\"") == 1) Then
$new_line = "user_pref(\"browser.startup.homepage\", \"" & $new_value & ""\");"
Endif


