Page 1 sur 1

[..] Rechercher un mot dans un fichier

Posté : mer. 15 déc. 2010 10:11
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 !

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

Posté : mer. 15 déc. 2010 10:26
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

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

Posté : mer. 15 déc. 2010 11:19
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 ?

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

Posté : mer. 15 déc. 2010 15:10
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 ---")

 

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

Posté : mer. 15 déc. 2010 15:17
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