[R] Récupération variable dans un fichier texte

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Alexpgm
Niveau 2
Niveau 2
Messages : 25
Enregistré le : sam. 09 janv. 2010 23:40
Status : Hors ligne

[R] Récupération variable dans un fichier texte

#1

Message par Alexpgm »

Bonjour,

Voila mon problème :
J'ai besoin de récupérer une variable dans une phrase. type : Blablabla..... Blabla (00).
Actuellement, mon fichier de log me donne une phrase, avec en bout un nombre.
Ce nombre varie bien évidemment...

Ou j'en suis :

J'arrive a ouvrir mon fichier avec ShellExecute avec @SW_Hide
Mais je ne sais pas comment lire la dernière ligne de mon log, et récupérer le nombre pour ensuite l'envoyer dans une variable...


Merci de votre aide.
Modifié en dernier par Alexpgm le jeu. 28 janv. 2010 22:30, modifié 1 fois.
Avatar du membre
FuriousFred
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mer. 23 sept. 2009 22:47
Status : Hors ligne

Re: [..] Récupération variable dans un fichier texte

#2

Message par FuriousFred »

Bonjour.

Je pense pouvoir t'aider mais il faut que tu sois plus clair. Essaie de joindre ton bout de code et un exemple de fichier de log si tu le peut.
Ensuite je suppose que le fichier d'aide d'autoit ou un des tutoriels du site pourrais répondre à ton problème...

Avec le peu d'infos que tu donnes, je ne peux que te renvoyer à l'aide des fonctions suivantes:

FileReadLine
StringLen
StringMid
MsgBox

Il y a normalement tout ce qu'il faut pour toi trouver. Si tu n'es pas anglophone, l'aide traduite en français est dispo sur le forum.

FuriousFred
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Récupération variable dans un fichier texte

#3

Message par matwachich »

Code : Tout sélectionner

#cs
Si par exemple ton fichier log s'appel log.txt et que la derniere ligne est de type: abcdefg (00),
c'est à dire: 8caractère-parenthese-variable-parenthese
#ce

$file = FileOpen("log.txt", 0)

$read = FileReadLine($file, -1)

$read = StringTrimLeft($read, 9)
$read = StringTrimRight($read, 1)

MsgBox(0, "Test", "Voici ta variable: " & $read)

FileClose($file)
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Alexpgm
Niveau 2
Niveau 2
Messages : 25
Enregistré le : sam. 09 janv. 2010 23:40
Status : Hors ligne

Re: [..] Récupération variable dans un fichier texte

#4

Message par Alexpgm »

Merci pour ton aide,

J'ai été voir tout ça, et je n'arrive pas a mon but, je vais donc essayer d'expliquer précisément ce que je veux ...

Alors, j'ai un fichier de log qui est édité au fur et a mesure.

Ce que je veux, récupérer une valeur numérique noté dans celui-ci.
Dans la ligne, la partie qui m'interesse se situe au 86ieme caractère en partant de la gauche, et se prolonge juste deux caractère avan la fin.

-> xxxx...xxxXXxx Je souhaite récupérer le nombre dans la ligne, et la mettre dans une variable.

Ce que j'ai fait :
- Ouverture du fichier avec ShellExecute -> Ok : un notepad.exe s'ouvre en processus...
- Je lis la dernière ligne avec FileReadLine option -1 pour dernière ligne
je l'écris comme ça : $lecture = FileReadLine($monfichier)
le problème est que je n'ouvre pas le fichier avec FileOpen, car il ne trouve pas mon fichier...Donc je ne sais pas si il arrive ou non a lire la ligne.
- Ensuite j'utilise la fonction string, sur ma variable $lecture pour me donner ma chaine de charactère.
-Après le séléctionne ce qui m'interesse, en coupant avec StringTrimLeft/Right pour ne garder que le nombre XX.
- Ensuite j'aimerais que ce nombre soit mis dans une variable.

Je sais qu'il y a des problème dans ma programmation, car vu que j'utilise String, ma donnée est donc de type caractère, comment la repasser en numérique avant de la renvoyer dans la variable finale pour faire des opération dessus?
Au niveau de l'ouverture de fichier: j'ai utilisé ShellExecute, car je peux donner l'emplacement du fichier, pas dans FileOpen a priori...

Voila j'espère avoir été assez clair, je reste vague, car je ne veux pas de programme tout fait, je voudrais le faire moi même.

En gros ce que j'ai besoin:

- Ouvrir un fichier .txt en tache de fond
- Récupérer sur la dernière ligne du .txt la valeur numérique (xxxxxxxxxxxxxxxxXXxx)
87 2 2
En Gras le nombre de caractère qui m'interesse, pour mieu le visualiser...

Je ne sais pas si la façon dont je m'y prend est la meilleur... Merci d'avance pour votre aide.
Alexpgm
Niveau 2
Niveau 2
Messages : 25
Enregistré le : sam. 09 janv. 2010 23:40
Status : Hors ligne

Re: [..] Récupération variable dans un fichier texte

#5

Message par Alexpgm »

Merci de ton aide matwachich, je n'avais pas vu ta réponse...

J'ai essayé ton code, mais la variable ne s'affiche pas.

Je pense que c'est a cause de FileOpen, qui ne trouve pas le fichier, car il est dans un dossier spécifique : C:\Users\Alex\Documents\.......\......\Logs\

Merci d'avance.
Alexpgm
Niveau 2
Niveau 2
Messages : 25
Enregistré le : sam. 09 janv. 2010 23:40
Status : Hors ligne

Re: [..] Récupération variable dans un fichier texte

#6

Message par Alexpgm »

Personne ne peux m'aider?

matwachich, ta réponse ne fonctionne pas, le fichier ne s'ouvre pas, ou la variable n'est pas récupérée...
Je n'ai pas trouvé comment évoluer, as tu une idée?

Cordialement Alex
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Récupération variable dans un fichier texte

#7

Message par Iste »

- Ouverture du fichier avec ShellExecute -> Ok : un notepad.exe s'ouvre en processus...
[...]
- Ensuite j'utilise la fonction string, sur ma variable $lecture pour me donner ma chaine de charactère.
innutile !
Le ShellExecute() vous permettra uniquement d'afficher le contenu du txt (a moins que vous le vouliez)
FileRead() renvoi déja une chaine de caractères.

1 - Faites un FileRead() ou un FileReadLine(). Pour vérifier ;

Code : Tout sélectionner

$ligne = FileReadLine("monfichier.txt")
MsgBox(0,'',$ligne)
2 - Récupérer le nombre a l'aide de StringRegExp().
Si vous ne savez pas vous en servir, regardez la doc.
Pour un texte de type "Aaaaa bbbb cccc (0123456789)" on doit pouvoir faire un

Code : Tout sélectionner

$number = StringRegExp($ligne,"([0-9])",1) ;A tester /!\
Votre nombre devrait se trouver dans $number[$number[0]] ou dans $number[UBound($number)-1] (a tester aussi)

Bonne chance
Signez ici
Alexpgm
Niveau 2
Niveau 2
Messages : 25
Enregistré le : sam. 09 janv. 2010 23:40
Status : Hors ligne

Re: [..] Récupération variable dans un fichier texte

#8

Message par Alexpgm »

Merci pour cette réponse, effectivement, un fichier s'ouvre, dans mon cas (teste.txt), le problème c'est que c'est celui de l'aide autoit qui s'ouvre, et non celui qui se trouve dans MesDocuments\.....\log.

En attendant une réponse, je vais me documenter sur StringRegExp().

Merci d'avance.

Ma ligne pour etre exacte est de la forme :

01/26/2010 18:32:50-- Xxxx xxxx xxxx xxxxxxx "Xxxxxx xx xxxxxxx xxxxxxx" (xx xx xxxxx 5).

Sachant que ma variable numérique varie de 1 a 3 chiffre, et ne concerve pas les 0, elle passe donc de par exemple 100 à 99, puis 9, puis 0.

Ce que je veux donc, c'est récupérer cette valeur, quelque soit sa taille, et l'envoyer dans une variable.
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Récupération variable dans un fichier texte

#9

Message par matwachich »

Code : Tout sélectionner

#cs
Si par exemple ton fichier log s'appel log.txt et que la derniere ligne est de type: comme tu a dit!,
c'est à dire: 87-ta variable-2
#ce

#cs ### ca c'etait pour moi, juste pour tester ###
$file = FileOpen("log.txt", 2)
For $i = 1 To 87 Step 1
    FileWrite($file, "x")
Next
FileWrite($file, "86xx")
FileClose($file)
#ce ##############################################

$repertoir = "log.txt" ;- met le repertoire de ton fichier ici

$file = FileOpen($repertoir, 0)

$read = FileReadLine($file, -1) ;- on lit la derniere ligne
ConsoleWrite($read & @CRLF)

$read = StringTrimLeft($read, 87) ;- on enleve tout ce qui est AVANT le 88e caractere, ou les 87 premiers caracteres
ConsoleWrite($read & @CRLF)

$read = StringRegExpReplace($read, "\D", "") ;- on enleve (remplace par "") tous les caractere de type /D, c.a.d. les lettres (regarde la doc)
ConsoleWrite($read & @CRLF)

MsgBox(0, "Test", "Voici ta variable: " & $read)

FileClose($file)
#cs
On aurai pu ne pas faire le stringtrimleft et faire direct le stringregexpreplace, mais cette derniere enlevera uniquement les caracteres
de $read, et on ne sais pas s'il ya des chiffres dans les 87e premiers caracteres qui pourai fausser la variable
#ce

 
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Alexpgm
Niveau 2
Niveau 2
Messages : 25
Enregistré le : sam. 09 janv. 2010 23:40
Status : Hors ligne

Re: [R] Récupération variable dans un fichier texte

#10

Message par Alexpgm »

Parfait, Merci de ton aide, sa marche au poil !
Répondre