[R] Copier une chaîne de caractère
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.
Re: [R] Copier une chaîne de caractère
traitement un par un:
n1.ini
n2.ini
n3.ini
n4.ini
.
.
.
nn.ini
n1.ini
n2.ini
n3.ini
n4.ini
.
.
.
nn.ini
Modifié en dernier par Boulanza le jeu. 24 avr. 2014 23:57, modifié 1 fois.
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Copier une chaîne de caractère
?
Code : Tout sélectionner
$dir = "c:\Temp\ExportDrvpi\"
Local $hSearch = FileFindFirstFile($dir & "*.ini"), $res
While 1
$sFileName = FileFindNextFile($hSearch)
$txt = FileRead($dir & $sFileName)
$tilt = StringRegExp($txt, '\$MP=(\V+)', 3)
If IsArray($tilt) Then
$res = $tilt[0]
Exitloop
EndIf
Wend
FileClose($hSearch)
If $res = "" Then
Msgbox(0,"", "pas trouvé")
Else
Msgbox(0,"", $res)
EndIf" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Copier une chaîne de caractère
Mikell, je crois qu'il voulait faire du traitement fichier par fichier, pas une recherche
...
Edit : \V+ ? Je t'avais jamais vu utilisé ça...
Edit : \V+ ? Je t'avais jamais vu utilisé ça...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Copier une chaîne de caractère
J'en ai conclu qu'il cherchait une chaine dans un fichier ini de nom inconnu mais d'emplacement connu, mais vu la clarté de l'énoncé c'est vrai que je peux me tromperBoulanza a écrit :Pour jguinch oui, effectivement je ne connais pas le nom du fichier, mais par contre je connais son emplacement dans le fichier temporaire :c:\Temp\ExportDrvpi\*.ini
\V+ j'utilise ça des fois comme "tout jusqu'à la fin de la ligne" (non- CR, LF, VT, FF)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Copier une chaîne de caractère
Oui mikell avec votre scripte on connait l'adresse exacte du fichier.ini bonne idée.
Celle de la doc l'est aussi pour un traitement en serie:
Maintenant, ce qui reste à faire c'est d'intégrer cette application dans le script de scorp84 !
Celle de la doc l'est aussi pour un traitement en serie:
► Afficher le texte
Maintenant, ce qui reste à faire c'est d'intégrer cette application dans le script de scorp84 !
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Copier une chaîne de caractère
mikell,
Tu as aussi \N* un poil plus proche de la spécification "tout jusqu'à la fin de la ligne".
Tu as aussi \N* un poil plus proche de la spécification "tout jusqu'à la fin de la ligne".
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: [R] Copier une chaîne de caractère
Bonjour,
L’avantage de ce forum AutoIt c’est que tout le monde y participe activement à la décision… Bravo…
Pour ne pas sortir de la question objet de cette aide, peut on améliorer le scripte de mikell ci-dessus pour un traitement fichier par fichier:
Script mikell
Puis intégrer cette solution "mikell" dans le script de scorp84 afin de permetre de copier une chaîne de caractère depuis le fichier « texte 1 » et la collet à la place d’une autre chaîne de caractère se trouvant dans un autre fichier « texte 2 ».
Script scorp84
Cordialement.
L’avantage de ce forum AutoIt c’est que tout le monde y participe activement à la décision… Bravo…
Pour ne pas sortir de la question objet de cette aide, peut on améliorer le scripte de mikell ci-dessus pour un traitement fichier par fichier:
Script mikell
► Afficher le texte
Script scorp84
► Afficher le texte
Re: [..] Copier une chaîne de caractère
Bonjour,
Je suis arrivé à intégrer les deux scriptes, mais j'ai un souci avec la fonction:
;Remplacement de chaîne
$line=StringReplace($line,"????",$chaine)
svp, pouvriez vous me guider à trouver mon erreur merci.
Je suis arrivé à intégrer les deux scriptes, mais j'ai un souci avec la fonction:
;Remplacement de chaîne
$line=StringReplace($line,"????",$chaine)
► Afficher le texte
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Copier une chaîne de caractère
Si le problème avait dès le début été clairement énoncé avec précision, il aurait été résolu en 3 ou 4 messages au lieu des 28 actuels ^^
Le mode 2 efface tout le contenu du fichier avant écriture, tu es sûr que c'est ce que tu veux ?
@jchd
C'est vrai mais j'ai découvert \N sur le tard dans ta nouvelle doc, après on a des habitudes tu sais ce que c'est... et franchement entre \V et \N la différence n'est pas outrageuse même si effectvt \N est approprié
Code : Tout sélectionner
Local $file2 = FileOpen($sFilePath,2)ça serait pas plutôt ça ?FileWrite
Write text/data to the end of a previously opened file.
@jchd
C'est vrai mais j'ai découvert \N sur le tard dans ta nouvelle doc, après on a des habitudes tu sais ce que c'est... et franchement entre \V et \N la différence n'est pas outrageuse même si effectvt \N est approprié
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [..] Copier une chaîne de caractère
Mon intention n'est certainement pas de t'outrager !
Je constate au contraire que tu interviens de plus en plus -à bon escient et ici ou ailleurs- dans les fils mettant en oeuvre des expressions régulières, ce qui est tout à fait à ton honneur.
Je constate au contraire que tu interviens de plus en plus -à bon escient et ici ou ailleurs- dans les fils mettant en oeuvre des expressions régulières, ce qui est tout à fait à ton honneur.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: [..] Copier une chaîne de caractère
je compte sur votre compréhension...
Mikell : Le mode 2 efface tout le contenu du fichier avant écriture, tu es sûr que c'est ce que tu veux ?
RE : Oui, il faut garder le mode 2
Mikell : Le mode 2 efface tout le contenu du fichier avant écriture, tu es sûr que c'est ce que tu veux ?
RE : Oui, il faut garder le mode 2
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Copier une chaîne de caractère
@jchd
Boudu non, c'est juste que j'ai bien conscience d'être un newbie encore hésitant en matière d'expressions régulières, qui sont un labyrinthe dans lequel il vaut mieux naviguer avec une forte lampe, l'exemple cy-dessus en étant une parfaite illustration
Boulanza
Boudu non, c'est juste que j'ai bien conscience d'être un newbie encore hésitant en matière d'expressions régulières, qui sont un labyrinthe dans lequel il vaut mieux naviguer avec une forte lampe, l'exemple cy-dessus en étant une parfaite illustration
Code : Tout sélectionner
. : Matches any single character except, by default, a newline sequence
\N : Matches any character except a newline sequence
\V : Matches any character that is not a vertical whitespace character. (ref: \v is equivalent to "[\x0A-\x0D]" by default)Boulanza
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Copier une chaîne de caractère
Re-Bonjour mikell,
Je suis arrivé à intégrer votre premier script avec celui de scorp84, les deux scriptes répondent parfaitement à ma demande, mais j'ai un problème pour remplacer une chaîne de caractère. Voici la fonction qui ne marche pas dans le script ci-dessous:
;Remplacement de chaîne
$line=StringReplace($line,"????",$chaine)
Cordialement.
Je suis arrivé à intégrer votre premier script avec celui de scorp84, les deux scriptes répondent parfaitement à ma demande, mais j'ai un problème pour remplacer une chaîne de caractère. Voici la fonction qui ne marche pas dans le script ci-dessous:
;Remplacement de chaîne
$line=StringReplace($line,"????",$chaine)
► Afficher le texte
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Copier une chaîne de caractère
ça peut-être ?
Code : Tout sélectionner
$txt1 = FileRead("fichier1") ; lit fichier1
$txt1 = StringReplace($txt1, "????", $chaine) ; remplace "????" par $chaine
Local $file2 = FileOpen("fichier2", 2) ; ouvre "fichier2" en écriture avec effacement du contenu
FileWrite($file2, $txt1) ; écrit le nouveau texte
FileClose($file2)" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Copier une chaîne de caractère
Pour mikell
Oui, J'ai testé... ça donne un fichier .ini vide ! en plus lorsque je modifie la fonction Local $file2 = FileOpen("fichier2", 2) en mode 0: FileOpen("fichier2", 0) pas de remplacement de chaîne de caractère: "????" par $chaine pas de réaction de la part de la fonction : $txt1 = StringReplace($txt1, "????", $chaine). Peut être je n'ai pas su insérè votre modiication dans le script ! ci-joint:
Oui, J'ai testé... ça donne un fichier .ini vide ! en plus lorsque je modifie la fonction Local $file2 = FileOpen("fichier2", 2) en mode 0: FileOpen("fichier2", 0) pas de remplacement de chaîne de caractère: "????" par $chaine pas de réaction de la part de la fonction : $txt1 = StringReplace($txt1, "????", $chaine). Peut être je n'ai pas su insérè votre modiication dans le script ! ci-joint:
► Afficher le texte
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Copier une chaîne de caractère
Bon on résume
Avec un fichier ini comme çale code suivantretourne bien dans la msgbox la chaine recherchée
J'ai testé le code ci-dessus avec des fichiers txt et il fait parfaitement tout ce que tu demandes
Donc
Pour la partie 'copie' (commentée dans le script) tu as dû faire quelque part une erreur de syntaxe
Alors
Vérifie bien les chemins des fichiers, et sous chaque ligne de la partie 'copie' du script mets une msgbox de debug, comme ça tu trouveras où ça merdoie
Avec un fichier ini comme ça
► Afficher le texte
► Afficher le texte
J'ai testé le code ci-dessus avec des fichiers txt et il fait parfaitement tout ce que tu demandes
Donc
Pour la partie 'copie' (commentée dans le script) tu as dû faire quelque part une erreur de syntaxe
Alors
Vérifie bien les chemins des fichiers, et sous chaque ligne de la partie 'copie' du script mets une msgbox de debug, comme ça tu trouveras où ça merdoie
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [R] Copier une chaîne de caractère
Bonsoir mikell,
Merci à toi et à tous les intervenants qui m'ont aidé à monter ce script, c'est grasse à vos aides que j'ai enfin pu trouver la solution parfaite, objet de ma demande.
Cordialement.
Merci à toi et à tous les intervenants qui m'ont aidé à monter ce script, c'est grasse à vos aides que j'ai enfin pu trouver la solution parfaite, objet de ma demande.
Code : Tout sélectionner
#NoTrayIcon
#RequireAdmin
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <Array.au3>
#Include <File.au3>
;=================================
Global $dir = @TempDir&"\ExportDrvpi\"
Global $hSearch = FileFindFirstFile($dir & "*.ini"), $res
While 1
$sFileName = FileFindNextFile($hSearch) ; lit un fichier ini après l'autre
$txt = FileRead($dir & $sFileName)
Msgbox(0,"$sFilePath", $sFileName)
$tilt = StringRegExp($txt, '\$Key=(\V+)', 3) ; cherche une chaine $MP="chaine"
If IsArray($tilt) Then
$res = $tilt[0] ; si chaine trouvée, $res = la chaine
Exitloop ; et on sort de la boucle
EndIf
Wend
;==========================
Global $sFilePath=$sFileName
;Msgbox(0,"$sFilePath", $sFilePath)
Global $Key=$res
Global $chaine = $res
MsgBox(0, "Chaine", $chaine)
Global $chaine = IniRead($sFilePath, "parametres", "$Key", "")
;Msgbox(0,"trouvé", $res)
; Ouverture des fichiers
Global $file1 = FileOpen(@ScriptDir&"\test1.au3", 0)
Global $file2 = FileOpen($sFilePath,2)
Msgbox(0,"trouvé", $file2)
;Vérifie si fichier 1 OK
If $file1 = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Vérifie si fichier 2 OK
If $file2 = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
; Déclare contenu fichier 2
Dim $contenu2
; Lecture ligne à ligne du fichier 1
While 1
Local $line = FileReadLine($file1)
; SI EOF, sortie de la boucle
If @error = -1 Then ExitLoop
; Remplacement de chaîne
$line=StringReplace($line,"????",$res)
; Ajout au contenu du fichier 2
$contenu2=$contenu2 & $line & @CRLF
WEnd
; Ecriture du fichier 2
FileWrite($file2,$contenu2)
; Fermeture des fichiers
FileClose($file1)
FileClose($file2)
; Si le remplacement ne s'est pas effectué, on supprimer le fichier backup.
;Msgbox(0,"$sFileName", $sFileName)
FileDelete($dir&$sFileName)
Modifié en dernier par Boulanza le sam. 26 avr. 2014 22:09, modifié 2 fois.
Re: [R] Copier une chaîne de caractère
Boulanza, essaye de penser à la balise
Code : Tout sélectionner
...Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [R] Copier une chaîne de caractère
Bonsoir jguinch,
Merci pour la remarque. C'est fait.
Cordialement.
Merci pour la remarque. C'est fait.
Cordialement.


