[R] Recherche multiple dans de multiple fichiers

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
pins38
Niveau 2
Niveau 2
Messages : 18
Enregistré le : mer. 24 déc. 2008 12:01
Status : Hors ligne

[R] Recherche multiple dans de multiple fichiers

#1

Message par pins38 »

Bonjour,

Je viens à nouveau vers vous car je n'arrive pas à mes fins. Voici mon problème, à partir d'une valeur (ADL), il me faut retrouver un destinataire, un lot et une référence et ce dans plusieurs fichiers distincts. Le nombre de fichiers peut être 1, 5, 8, 13 ou 102.Exemple (sur un fichier):

ADL ==> YRAWB900 qui me donne 16 destinataires et qui devraient me donner 76 lots et donc 76 références.

Pour l'instant je suis arrivé à récupérer les 16 destinataires dans un fichier Dest.txt qui contient le nom du fichier sans l'extension(.wri) suivi de la valeur du destinataire ==> 171 DEST=AG CLIENT; pour les lots je lis le fichier 171.wri ligne par ligne pour rechercher le destinataire et ramener la ligne contenant ce destinataire mais je ne ramène rien ! Fichier à traiter ==> 171.wri, fichier destinataires ==> Dest.txt, fichier lots ==> Lot.txt
► Afficher le texte
Dest.txt
(348 Octets) Téléchargé 62 fois
Lot.txt
(3.97 Kio) Téléchargé 58 fois
171.txt
(159.52 Kio) Téléchargé 62 fois
Pour les tests bien penser à remettre l'extension .wri au fichier 171.txt
Merci pour votre aide précieuse. :)
Modifié en dernier par pins38 le mar. 20 janv. 2009 19:38, modifié 2 fois.
Cordialement.
Philippe.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Recherche multiple dans de multiple fichiers

#2

Message par Tlem »

Hummm pas évident de tout comprendre.
Pouvez vous expliquer le cheminement complet de ce que vous voudriez faire.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
pins38
Niveau 2
Niveau 2
Messages : 18
Enregistré le : mer. 24 déc. 2008 12:01
Status : Hors ligne

Re: [..] Recherche multiple dans de multiple fichiers

#3

Message par pins38 »

Il me semblait que cela n'était pas très clair.
Je recherche ligne par ligne dans 1 à n fichiers la chaîne YRAWB900 et si je la trouve j'écris le nom du fichier sans l'extension et le destinataire dans Dest.txt
Chaîne Ligne où la chaîne est présente Résultat Dest.txt
YRAWB900 LOT=;DEST=AG CLIENT;ADLR=YRAWB900; 171 DEST=AG CLIENT; 1ere ligne où la chaîne à été trouvée.
...
YRAWB900 LOT=;DEST=171 QE 25;ADLR=YRAWB900; 171 DEST=171 QE 25;
...
YRAWB900 LOT=;DEST=171 RH 59;ADLR=YRAWB900; 171 DEST=171 RH 59; Dernière ligne où la chaîne à été trouvée.
Pour cette recherche pas de problèmes !
A partir du fichier Dest.txt, j'extrais les 3 premiers caractères qui vont me donner la variable $Centre qui va me servir à sélectionner le fichier dans lequel je vais effectuer la recherche des lots (ici 171.wri), j'extrais le reste de la ligne à partir du 4eme caractère qui va me donner la variable $Dest.
Je recherche ligne par ligne dans le(s) fichier(s) $Centre.wri la chaîne $Dest et si je la trouve j'écris le nom du fichier sans l'extension, le N° de ligne et le lot dans Lot.txt
Chaîne Ligne où la chaîne est présente Résultat Lot.txt
DEST=AG CLIENT; LOT=SUB;DEST=AG CLIENT;ENVOI=B;NB=00; 171 2677 LOT=SUB;DEST=AG CLIENT;ENVOI=B;NB=00;
...
DEST=AG CLIENT; LOT=;DEST=AG CLIENT;ENVOI=B;NB=00; 171 3741 LOT=;DEST=AG CLIENT;ENVOI=B;NB=00;
...
DEST=171 QE 25; LOT=17125;DEST=171 QE 25;ENVOI=B;NB=00; 171 2771 LOT=17125;DEST=171 QE 25;ENVOI=B;NB=00;
...
DEST=171 QE 25; LOT=17125;DEST=171 QE 25;ENVOI=B;NB=00; 171 3309 LOT=17125;DEST=171 QE 25;ENVOI=B;NB=00;
C'est cette recherche qui me pose problème.
Cordialement.
Philippe.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Recherche multiple dans de multiple fichiers

#4

Message par Tlem »

J'ai vraiment eu du mal à comprendre la totalité de la demande, tant les choses sont complexes.
Mais je crois y être arrivé.

Je n'ai pas mis de commentaire pour expliquer le code, mais si c'est nécessaire, je le ferais plus tard.

Voici mon code :
► Afficher le texteCode
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
pins38
Niveau 2
Niveau 2
Messages : 18
Enregistré le : mer. 24 déc. 2008 12:01
Status : Hors ligne

Re: [..] Recherche multiple dans de multiple fichiers

#5

Message par pins38 »

Merci Thierry pour cette aide précieuse, il me reste une dernière boucle à faire et là il faut que le lise le fichier à l'envers pour retrouver une autre valeur et ce à partir d'une certaine ligne !
Un exemple étant plus parlant qu'un grand discours voici donc cet exemple :
La première boucle nous a donné un destinataire précédé du nom de fichier ou il a été trouvé ==> 171#DEST=AG CLIENT;
La deuxième boucle nous a donné un lot précédé du nom de fichier et de la ligne ou il a été trouvé ==>171#2677#LOT=SUB;DEST=AG CLIENT;ENVOI=B;NB=00;
La troisième boucle devrait nous donner la référence située quelque(s) ligne(s) au dessus du lot pour l'exemple ci dessus le résultat est : REF=49E0010; situé à la ligne 2675 (le nombre de ligne entre le destinataire et la référence n'est bien entendu jamais identique) ! Cela aurait été trop simple !
Cela se présente comme ça dans le fichier à lire :
2675 REF=49E0010;
2676 LOT=SUB;DEST=SUB;ENVOI=P;NB=00;
2677 LOT=SUB;DEST=AG CLIENT;ENVOI=B;NB=00;

2713 REF=49E0221;
2714 LOT=SUB;DEST=SUB;ENVOI=P;NB=00;
2715 LOT=SUB;DEST=REGROUP COMP;ENVOI=B;NB=00;
2716 LOT=SUB;DEST=AG CLIENT;ENVOI=B;NB=00;

Le résultat devrait se présenter comme ceci ==>
171#REF=49E0010;#LOT=SUB;DEST=AG CLIENT;ENVOI=B;NB=00;
171#REF=49E0221;#LOT=SUB;DEST=AG CLIENT;ENVOI=B;NB=00;
Cordialement.
Philippe.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Recherche multiple dans de multiple fichiers

#6

Message par Tlem »

Vous avez dans votre fichier Lot.txt, les différents lots pour lesquels vous voulez la référence ainsi que la ligne du lot et le nom du fichier .wri.

Donc vous allez devoir faire une boucle de lecture du fichier Lot.txt ligne à ligne, puis pour chaque ligne de ce fichier, relever le numéro de ligne indiqué ainsi que le nom du fichier concerné puis avec ces deux informations, vous pourrez lire le fichier .wri concerné en commençant par la ligne X-1 puis X-2 puis X-3 ...
Jusqu'à ce que vous trouviez dans la ligne la chaine : 'REF=' et là bingo vous aurez votre information. ;)

Aller, courage, vous y êtes presque. :lol:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
pins38
Niveau 2
Niveau 2
Messages : 18
Enregistré le : mer. 24 déc. 2008 12:01
Status : Hors ligne

Re: [..] Recherche multiple dans de multiple fichiers

#7

Message par pins38 »

J'ai réussi à trouver la première référence qui est à la ligne 2675 mais je reste coincé sur cette ligne et je ne vois pas ce qui cloche :?:
► Afficher le texte
Petit Bingo ! :)
Cordialement.
Philippe.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Recherche multiple dans de multiple fichiers

#8

Message par Tlem »

Ajoutez un ExitLoop après la ligne

Code : Tout sélectionner

FileWriteLine ($File2, $Line1)
pour sortir de votre 2ieme boucle et poursuivre la première. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
pins38
Niveau 2
Niveau 2
Messages : 18
Enregistré le : mer. 24 déc. 2008 12:01
Status : Hors ligne

Re: [R] Recherche multiple dans de multiple fichiers

#9

Message par pins38 »

Merci, tout fonctionne parfaitement bien ! :lol:
Cordialement.
Philippe.
Répondre