[R] Copier plusieurs lignes d’un fichier ini vers un script Autoit

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Boulanza
Niveau 8
Niveau 8
Messages : 596
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

[R] Copier plusieurs lignes d’un fichier ini vers un script Autoit

#1

Message par Boulanza »

Bonjour,
Je cherche script pour copier plusieurs lignes d’un fichier ini vers un script Autoit :
Soit de la ligne numéro 2 à 30 = 29 lignes à copier vers un script au3 à partir de la ligne 200 à la ligne numéro 229. Voir exemple ci-dessous:
J'ai trouvé plusieurs solutions (fonction: _FileWriteToLine()) sur ce sujet mais pas de solution qui permet de copier plusieurs lignes d'un coup du fichier ini vers un autre fichier.
N.B: fonction: _FileWriteToLine() ne copie pas les lignes d'un fichier ini vers un autre fichier ! ?
Merci d'avance pour votre aide.
Cordialement.

Code : Tout sélectionner

Fichier ini
1- [Parametres]
2- $Civilite=XXXX
.
.
.
30- $CodeCNE=XXXX

Code : Tout sélectionner

Fichier au3
200- $Civilite=XXXX
.
.
.
229- $CodeCNE=XXXX
Modifié en dernier par Boulanza le dim. 22 nov. 2020 21:05, modifié 1 fois.
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 382
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: [..] Copier plusieurs lignes d’un fichier ini vers un script Autoit

#2

Message par jl56 »

Bonjour à tous,

Je reconstituerai le fichier Au3 avec des boucles
; creation fichier ini
$file = FileOpen(@ScriptDir & "\fichier.ini", 2)
For $i = 1 To 50
   FileWriteLine($file, "Ligne fichier INI n°=" & $i)
Next
FileClose($file)


; creation fichier au3
$file = FileOpen(@ScriptDir & "\fichier.au3", 2)
For $i = 1 To 300
   FileWriteLine($file, "Ligne fichier AU3 n°=" & $i)
Next
FileClose($file)


$tableau_fichier_ini = StringSplit(FileRead(@ScriptDir & "\fichier.ini"), Chr(13)) ; on crée un tableau avec le fichier decoupé sur le caractere retour chariot
$tableau_fichier_au3 = StringSplit(FileRead(@ScriptDir & "\fichier.au3"), Chr(13)); on crée un tableau avec le fichier decoupé sur le caractere retour chariot

; position des variables pour l'insertion
$debut_insertion_fichier_ini = 2
$fin_insertion_fichier_ini = 39

$debut_insertion_fichier_au3 = 200


$file = FileOpen(@ScriptDir & "\fichier.au3", 2) ; on reconstruit le fichier au3
For $i = 1 To $tableau_fichier_au3[0]
   FileWriteLine($file, StringReplace( $tableau_fichier_au3[$i],Chr(10),"")) ; ajout de la ligne dans le nouveau fichier au3 avec suppresion du @LF

   If $i = $debut_insertion_fichier_au3 Then ; losrqu'on arrive on point d'insertion sur le fichier au3 on ajoute les lignes choisies du fichier ini
      For $j = $debut_insertion_fichier_ini To $fin_insertion_fichier_ini
         FileWriteLine($file, StringReplace( $tableau_fichier_ini[$j],Chr(10),"")); ajout de la ligne du fichier ini dans le nouveau fichier au3 avec suppresion du @LF
      Next
   EndIf

Next
FileClose($file)


A+

JL56
Boulanza
Niveau 8
Niveau 8
Messages : 596
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Copier plusieurs lignes d’un fichier ini vers un script Autoit

#3

Message par Boulanza »

Bonjour JL56,
Merci pour votre suggestion. Voici ci-joint le résultat du test de votre script:
En plus il supprime le contenu du fichier source.ini (fichier.ini)
Cordialement.
Fichiers joints
fichier.au3
(9.09 Kio) Téléchargé 4 fois
fichier.au3
(9.09 Kio) Téléchargé 4 fois
Boulanza
Niveau 8
Niveau 8
Messages : 596
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Copier plusieurs lignes d’un fichier ini vers un script Autoit

#4

Message par Boulanza »

Bonjour,
Je suis arrivé à copier de la line 2 à la ligne 25 du fichier.ini avec le code ci-dessous.
Quelqu'un peut m'aider à placer ces 25 lignes dans la ligne numéro 200 à 225 du fichier au3
Cordialement.
#include <file.au3>
$file = FileOpen(@ScriptDir&"\fichier.ini", 0)
Global $Line[26]
If $file = -1 Then
   MsgBox(0, "Error", "Unable to open file.")
   Exit
EndIf

;While 1
   $Message = ""
   For $i = 2 to 25
   $line[$i] = FileReadLine($file,$i)
   $Message= $Message&$Line[$i]&@CRLF
   Next
  ; If @error = -1 Then ExitLoop
   MsgBox(0, "Test", $message)
;WEnd
FileClose($file)
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 382
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: [..] Copier plusieurs lignes d’un fichier ini vers un script Autoit

#5

Message par jl56 »

Mon script fonctionne et ne retourne pas ce que vous avez mis en téléchargement

Chez moi ça me retourne ceci ce qui me semble conforme a votre demande initial

► Afficher le texte

n'ayant pas vos fichiers je les génère en début de script. Je pensais que vous l'auriez compris c'était en commentaire (
; creation fichier ini
) désolé.
Supprimez les lignes du code de 1 a 15

Avez vous testé le script seul dans un dossier a part de vos propre fichier source?

Bonne journée

Cordialement,

JL56
Boulanza
Niveau 8
Niveau 8
Messages : 596
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Copier plusieurs lignes d’un fichier ini vers un script Autoit

#6

Message par Boulanza »

Bonjour,
Avez vous testé le script seul dans un dossier a part de vos propre fichier source?
Je viens de le faire, j'ai toujours le même résultat.
Cordialement.
Boulanza
Niveau 8
Niveau 8
Messages : 596
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Copier plusieurs lignes d’un fichier ini vers un script Autoit

#7

Message par Boulanza »

Bonsoir,
Voici le code qui résoud mon problème:
Cordialement.
;;Copier les lignes du fichier ini
Global $Line[26]
If $file01 = -1 Then
   MsgBox(0, "Error", "Unable to open file.")
   Exit
EndIf
   $Message = ""
   For $i = 2 to 25
   $line[$i] = FileReadLine($file01,$i)
   $Message= $Message&$Line[$i]&@CRLF
    Next
  ; MsgBox(0, "$Message", $Message)
FileWriteLine($file02, $Message)
;============================
;Copier $Message dans au3
$Source01 = FileRead($file02)
Local $nb = 0
While 1
   $nb += 1
   $read = FileReadLine(@ScriptDir & "\fichier.au3",$nb)
   If @error Then ExitLoop
   If $read = "Func CopyInfoEnseignant()" Then
      _FileWriteToLine(@ScriptDir & "\fichier.au3",$nb + 1,$Source01,False)
     ExitLoop
   EndIf
WEnd
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 23
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: [R] Copier plusieurs lignes d’un fichier ini vers un script Autoit

#8

Message par Nine »

Et si on laissait les UDF faire le travail :
#include <File.au3>

Const $sFileIni = "Test.ini"
Const $sFileAu3 = "Test.au3"
Const $sFileAu3New = "Test New.au3"

Local $aINI = FileReadToArray($sFileIni)
$aINI = _ArrayExtract($aINI, 1, 30)   ; extraire les ligne 2 à 31 du fichier ini
Local $aAU3 = FileReadToArray($sFileAu3)
Local $aAU3New = _ArrayExtract($aAU3, 0, 198) ; extraire les lignes 1 à 199 du fichier au3
_ArrayAdd($aAU3New, $aINI)
$aAU3 = _ArrayExtract($aAU3, 199) ; extraire le reste des lignes au fichier au3 à partir de la ligne 200
_ArrayAdd($aAU3New, $aAU3)
_FileWriteFromArray($sFileAu3New, $aAU3New)
Boulanza
Niveau 8
Niveau 8
Messages : 596
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Copier plusieurs lignes d’un fichier ini vers un script Autoit

#9

Message par Boulanza »

Bonsoir Nine et merci pour ce script réfléchi et professionnel. :idea:
Boulanza
Niveau 8
Niveau 8
Messages : 596
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Copier plusieurs lignes d’un fichier ini vers un script Autoit

#10

Message par Boulanza »

Bonjour Monsieur Nine,
Je viens de tester votre script, mais sans aucune réaction.
SVP : Je vous prie de revoir votre script.
#include <File.au3>
Const $sFileIni = @ScriptDir&"\Config.ini"
Const $sFileAu3 = @ScriptDir&"\Test.au3"
Const $sFileAu3New = @ScriptDir&"\Test New.au3"

Local $aINI = FileReadToArray($sFileIni)
$aINI = _ArrayExtract($aINI, 1, 30)   ; extraire les ligne 2 à 31 du fichier ini
Local $aAU3 = FileReadToArray($sFileAu3)
Local $aAU3New = _ArrayExtract($aAU3, 0, 198) ; extraire les lignes 1 à 199 du fichier au3
_ArrayAdd($aAU3New, $aINI)
$aAU3 = _ArrayExtract($aAU3, 199) ; extraire le reste des lignes au fichier au3 à partir de la ligne 200
_ArrayAdd($aAU3New, $aAU3)
_FileWriteFromArray($sFileAu3New, $aAU3New)
Boulanza
Niveau 8
Niveau 8
Messages : 596
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Copier plusieurs lignes d’un fichier ini vers un script Autoit

#11

Message par Boulanza »

Bonjour,
Pas de réaction de Nine, pour corriger son dernier solution : "Copier plusieurs lignes d’un fichier ini vers un script Autoit". Y a t 'il quelqu'un qui peut aider à résoudre les erreurs du script. Merci à vous...
Cordialement.
Répondre