[..] Action suite à la lecture d'un fichier log
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.
[..] Action suite à la lecture d'un fichier log
Bonjour à tous,
j'aimerai pouvoir copier des lignes d'un fichier log d'un logiciel de chat qui se complète en temps réel, en fonction de la personne qui écrit le message.
Les lignes s'affichent les unes à la suite des autres à la fin du fichier.
Imaginez 3 personnes discutant: pseudo1, pseudo2 et pseudo3
Je désire, par exemple, copier uniquement les lignes écrites par pseudo2.
Le script devrait alors analyser à chaque fois la dernière ligne du fichier et rechercher la chaîne de caractères "pseudo2 à écrit:"
Si cette chaîne est bien présente dans la ligne, la ligne doit être copier et coller dans un autre fichier texte.
L'ouverture et l'écriture du nouveau fichier texte ne pose pas de problème en soit, mais le reste...
Merci d'avance,
Maf
j'aimerai pouvoir copier des lignes d'un fichier log d'un logiciel de chat qui se complète en temps réel, en fonction de la personne qui écrit le message.
Les lignes s'affichent les unes à la suite des autres à la fin du fichier.
Imaginez 3 personnes discutant: pseudo1, pseudo2 et pseudo3
Je désire, par exemple, copier uniquement les lignes écrites par pseudo2.
Le script devrait alors analyser à chaque fois la dernière ligne du fichier et rechercher la chaîne de caractères "pseudo2 à écrit:"
Si cette chaîne est bien présente dans la ligne, la ligne doit être copier et coller dans un autre fichier texte.
L'ouverture et l'écriture du nouveau fichier texte ne pose pas de problème en soit, mais le reste...
Merci d'avance,
Maf
- jbnh
- Niveau 11
- Messages : 1932
- Enregistré le : ven. 02 mai 2008 14:54
- Localisation : Bruxelles
- Status : Hors ligne
Re: [.] Action suite à la lecture d'un fichier log
Il faut savoir comment se présente la ligne pour chaque message.
(exemple : pseudo2 : blablabla)
(exemple : pseudo2 : blablabla)
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !
Merci
Merci
Re: [..] Action suite à la lecture d'un fichier log
c'est de ce type:
<pseudo2> blablablablabla...
<pseudo1> blabla...
<pseudo2> bla...
<pseudo2> blablablablabla...
<pseudo1> blabla...
<pseudo2> bla...
- jbnh
- Niveau 11
- Messages : 1932
- Enregistré le : ven. 02 mai 2008 14:54
- Localisation : Bruxelles
- Status : Hors ligne
Re: [..] Action suite à la lecture d'un fichier log
Code : Tout sélectionner
#include <string.au3>
;------------------------------------------------
$filename = 'test2.txt'
$filename2 = 'recup.txt'
$pseudo = '<pseudo1>'
;------------------------------------------------
$file = FileOpen($filename, 0)
$read = FileRead($file)
$line = StringSplit($read, @CR)
For $i = 1 To $line[0]
$var = FileReadLine($file, $i)
$newline = _StringBetween($var, $pseudo, @LF)
If IsArray ($newline) Then
$text = $newline[0]
FileWrite($filename2, $text & @CRLF)
Endif
Next
FileClose($filename)
FileClose($filename2)

Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !
Merci
Merci
- jbnh
- Niveau 11
- Messages : 1932
- Enregistré le : ven. 02 mai 2008 14:54
- Localisation : Bruxelles
- Status : Hors ligne
Re: [..] Action suite à la lecture d'un fichier log
Code : Tout sélectionner
#include <file.au3>
Dim $array
;-------------------------------------------
Dim $pseudo = "<pseudo1> "
$filename = 'test2.txt'
$filename2 = 'recup.txt'
;-------------------------------------------
_FileReadToArray($filename, $array)
For $X = 1 to $Array[0]
If StringInStr($array[$X], $pseudo) Then
$var = FileReadLine($filename, $X)
$text = StringReplace($var, $pseudo, "")
FileWrite($filename2, $text & @CRLF)
EndIf
Next
Compléter les informations:
- test2.txt : fichier source
Code : Tout sélectionner
<pseudo2> blablablablabla...
<pseudo1> blabla...
<pseudo2> bla...
<pseudo1> kiki
- recup.txt: le fichier avec les phrases de pseudo1
Ca ne marche que pour la configuration : <pseudo> texte
Oubliez pas de trouver l'erreur de mon premier script. Merci

Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !
Merci
Merci
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Action suite à la lecture d'un fichier log
Heuu il y en à plusieurs ...jbnh a écrit :Oubliez pas de trouver l'erreur de mon premier script. Merci![]()

Code : Tout sélectionner
$line = StringSplit($read, @CR)
Ensuite, tu lit le fichier ligne par ligne à la recherche de $pseudo en utilisant _StringBetweenen.

D'autant plus que tu recherche une chaine entre $pseudo et un @LF (qui n'existe pas).
Dans ce cas, il aurait fallut faire ceci :
Code : Tout sélectionner
$var = FileReadLine($file, $i) & @LF
$newline = _StringBetween($var, $pseudo, @LF)
En ce qui concerne le deuxième code, il est nettement plus simple, mais toujours pareil, tu utilise _FileReadToArray pour connaitre le nombre de ligne (pas logique car la macro @error est là pour ça !!!) et ensuite tu fait alternativement une lecture de fichier puis une écriture dans un autre fichier or ceci demande beaucoup de temps sur des fichiers de grandes importance. Il vaudrait mieux faire la lecture ligne par ligne comme tu le fait mais en utilisant le Handle du fichier et de mettre le résultat dans une chaine pour à la fin du traitement écrire le résultat dans le fichier.
Voici 3 manières d'utiliser ce code :
Solution N°1 :
Code : Tout sélectionner
#include <file.au3>
Dim $array
;-------------------------------------------
Dim $pseudo = "<pseudo1> ", $text
$filename = 'test2.txt'
$filename2 = 'recup.txt'
;-------------------------------------------
_FileReadToArray($filename, $array)
For $X = 1 to $Array[0]
If StringInStr($array[$X], $pseudo) Then
$text &= StringReplace($array[$X], $pseudo, "") & @CRLF
EndIf
Next
FileWrite($filename2, $text)
Code : Tout sélectionner
#include <file.au3>
;-------------------------------------------
Dim $pseudo = "<pseudo1> ", $i, $text
$filename = 'test2.txt'
$filename2 = 'recup.txt'
;-------------------------------------------
While 1
$i += 1
$var = FileReadLine($filename, $i)
if @error = -1 Then ExitLoop
If StringInStr($var, $pseudo) Then
$text &= StringReplace($var, $pseudo, "") & @CRLF
EndIf
WEnd
FileWrite($filename2, $text)
Solution N°3 (La plus propre) :
Code : Tout sélectionner
#include <file.au3>
;-------------------------------------------
Dim $pseudo = "<pseudo1> ", $text
$filename = 'test2.txt'
$filename2 = 'recup.txt'
;-------------------------------------------
$file = FileOpen($filename, 0)
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
If StringInStr($line, $pseudo) Then
$text &= StringReplace($line, $pseudo, "") & @CRLF
EndIf
Wend
FileWrite($filename2, $text)
FileClose($filename)
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é".
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é".
- jbnh
- Niveau 11
- Messages : 1932
- Enregistré le : ven. 02 mai 2008 14:54
- Localisation : Bruxelles
- Status : Hors ligne
Re: [..] Action suite à la lecture d'un fichier log
J'espère qu'un jour, moi petit padawan, aurai ta puissance du grand jedi 

Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !
Merci
Merci
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Action suite à la lecture d'un fichier log
Rhooo, pourtant je n'ai pas beaucoup de connaissance par rapport à d'autres.jbnh a écrit :J'espère qu'un jour, moi petit padawan, aurai ta puissance du grand jedi

Je serais plutôt padawan de deuxième année tout au plus (et encore).

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é".
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é".
Re: [..] Action suite à la lecture d'un fichier log
Merci beaucoup, je vais essayer ça.
Re: [..] Action suite à la lecture d'un fichier log
Alors la je suis pas d'accord... Si toi, t'es padawan de deuxième année, on est quoi nous?Tlem a écrit :Rhooo, pourtant je n'ai pas beaucoup de connaissance par rapport à d'autres.jbnh a écrit :J'espère qu'un jour, moi petit padawan, aurai ta puissance du grand jedi
Je serais plutôt padawan de deuxième année tout au plus (et encore).
Je te verrai plutôt dans le rôle de Yoda

- jbnh
- Niveau 11
- Messages : 1932
- Enregistré le : ven. 02 mai 2008 14:54
- Localisation : Bruxelles
- Status : Hors ligne
Re: [..] Action suite à la lecture d'un fichier log
Dans le rôle de yoda, il est 

Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !
Merci
Merci
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Action suite à la lecture d'un fichier log
Hummm je pense que vous vous mèprenez les amis, car mes connaissances sont très limitées (C'est surement par-ce que je passe du temps à chercher et à fouiller que je trouve les réponses mais surement pas grace à mes connaissances)timmalos a écrit :Alors la je suis pas d'accord... Si toi, t'es padawan de deuxième année, on est quoi nous?
Je te verrai plutôt dans le rôle de Yoda
Sylvanie, Voodoo, Michel Claveau, moutelous et d'autres font surement partie de ceux qui ont le plus de connaissances sur ce forum mais je suis très largement loin derrière eux.
Enfin l'essentiel c'est de partager.

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é".
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é".