[..] Rechercher un mot dans un fichier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jcaspar
Niveau 7
Niveau 7
Messages : 449
Enregistré le : mar. 23 sept. 2008 17:58
Status : Hors ligne

[..] Rechercher un mot dans un fichier

#1

Message par jcaspar »

B :mrgreen: onjour à tous !

Je voudrais rechercher le nom d'utilisateur en cours dans un fichier log
j'ai parcouru la doc mais il me semble qu'il n'existe pas de fonction permettant
une recherche dans un document mais peut est ce possible en utilisant plusieurs fonctions existantes :roll: ?

Merci d'avance pour vos sugestions et conseils !
Laddy
Niveau 7
Niveau 7
Messages : 321
Enregistré le : mer. 03 sept. 2008 07:34
Status : Hors ligne

Re: [..] Rechercher un mot dans un fichier

#2

Message par Laddy »

Bonjour
je ne suis pas une spécialiste d'autoit mais as tu regardé du coté de FileOpen et FileRead / FileReadLine ?

Peut être ce sujet pour t'aider : http://www.autoitscript.fr/forum/viewto ... =3&p=10821


Laddy
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Rechercher un mot dans un fichier

#3

Message par Tlem »

Il faudrait plus de renseignement que ca pour répondre pleinement à votre question ...

- D’où ou comment déduire le nom de l'utilisateur (quels sont les éléments qui pourraient être utilisés) ?
- Le fichier Log ferait quelle taille ?
- Est-il accessible en lecture ?
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é".
jcaspar
Niveau 7
Niveau 7
Messages : 449
Enregistré le : mar. 23 sept. 2008 17:58
Status : Hors ligne

Re: [..] Rechercher un mot dans un fichier

#4

Message par jcaspar »

Merci de votre réponse !

Voici le code du script que j'utilise ...il écrit dans le fichier droits.txt placé sur un serveur celui ci dispose des droits en lecture et écriture ..
à chaque nouvelle connexion d'un utilisateur
L'ennui étant que si une personne se connecte à plusieurs reprises elle apparaitra plusieurs fois dans le fichier ...
J'aurais souhaité filtrer en disant au script ...si le nom d'utilisateur connecté figure déjà dans le fichier ne lance pas le programme.

Pour cela il me semble nécessaire de devoir lire le contenu du fichier ...mais je ne vois pas comment faire ... ( le fichier pèse quelques KO)


Merci beaucoup pour vos idées !



Code : Tout sélectionner


#NoTrayIcon
#include <File.au3>

;_FileCreate("droits.txt")
$Fichier_Tempo="\\xxx\yyy$\droits_admin\droits.txt"
Runwait(@ComSpec & ' /c' & 'net localgroup administrateurs >> ' & $Fichier_Tempo,@AppDataCommonDir,@SW_HIDE)
FileWriteLine($Fichier_Tempo,"------------------------------------------------------")
FileWriteLine($Fichier_Tempo,@username & " " & @ComputerName )
FileWriteLine($Fichier_Tempo,"---------------------------------------------- FIN ---")

 
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Rechercher un mot dans un fichier

#5

Message par zeshrek »

C'est quand même pas hyper compliqué :

Code : Tout sélectionner

$NomFichier = "toto.log" ; le nom du fichier a parcourir


$ChaineRecherchee = @UserName ; le nom de l'utilisateur en  cours
$Resultat = "La chaine " & chr(34) & $ChaineRecherchee & chr(34) & " a été trouvée sur les lignes suivantes : "&@CRLF ; le début de la popup en cas de résultat
$Trouve = False ; le switch qui indiquera si on trouve
$i=1 ; le compteur de lignes

$Fichier = FileOpen($NomFichier, 0) ; on ouvre le fichier
If $Fichier = -1 Then ; Vérification que le fichier est correctement ouvert
    MsgBox(0, "Erreur", "Impossible d'ouvrir le fichier")
    Exit
EndIf

While 1 ; Et on parcoure le fichier...
    $ligne = FileReadLine($Fichier) ; ... en lisant chaque ligne...
    If @error = -1 Then ; ... jusqu'a la fin...
        ExitLoop
    Else
        If StringInStr($ligne,$ChaineRecherchee,2) <> 0 Then ; Si on trouve la chaine a chercher dans la ligne
            $Resultat = $Resultat & $i & ", " ; ... on l'inscrit dans les résultats ...
            $Trouve = True ;... et on précise qu'on a trouvé
        EndIf
        $i = $i + 1 ; On incrémente le compteur de ligne
    EndIf

Wend

FileClose($NomFichier) ; on n'oublie pas de fermer le fichier

if $Trouve = True Then; Si on a trouvé...
    msgbox(0,"Résultat",StringTrimRight($Resultat,2)) ; ... On l'affiche
Else ; ... sinon ...
    MsgBox(0,"Résultat", chr(34) & $ChaineRecherchee & chr(34) & " n'a pas été trouvé")
EndIf

 
Si vis pacem para bellum
Répondre