[R] Boucle

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
17Cx
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mer. 20 janv. 2010 13:05
Status : Hors ligne

[R] Boucle

#1

Message par 17Cx »

Bonjour tout le monde,

J'explique mon souci ( je suis débutant ) :

Je n'arrive pas à imaginer une solution me permettant de lire un fichier texte ligne par ligne et en fonction de chaque ligne, appeler une fonction.

Plus parlant:

1/ Le script lit dans le fichier Liste.txt la première ligne, admettons qu'elle contienne " C:\Windows\Notepad.exe "
2/ Le script détermine si le fichier C:\Windows\Notepad.exe existe, si oui appelle une fonction ( msgBox() avec le nom du fichier par exemple )
3/ Le script passe à la ligne suivante, recherche si le fichier existe, ect ... tout cela jusqu'à la dernière ligne du fichier List.txt .

Comme dit précédemment, je ne sais pas vraiment comment faire.
J'imagine qu'il faudra utiliser une boucle, j'avais pensé à " For...In...Next " , le souci c'est que l'expression doit être soit un objet soit un "Array" .

Faudrait-il stocker chaque ligne dans un tableau ?
Si oui, je ne sais vraiment pas comment faire.

J'espère que mon problème vous est parlant :)

Merci
++
Modifié en dernier par 17Cx le mer. 20 janv. 2010 18:17, modifié 1 fois.
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..] Boucle

#2

Message par pop45 »

Code : Tout sélectionner

$emplacement = @ScriptDir & "test.txt" ; tu met l'emplacement la

$file = FileOpen ( $emplacement , 0) ; ouvre le fichier

for $l = 1 to 50 ; nombre de ligne qu'il faut chercher
    $p = FileReadLine ( $file , $l ) ; lit la ligne
    If not @error Then ; verifie si il n'y a pas d'erreur
        If FileExists ( $p ) Then ; verifie si le fichier existe
            MsgBox (0,"" , $p , 2 ) ; msgbox ;-)
        EndIf 
    EndIf
next ; retourn au debut

FileClose ( $file )
Kado


Des que un des fichier prensent sur la liste il va afficher une msgbox qui va rester afficher 2 seconde puis il va chercher le reste
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
17Cx
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mer. 20 janv. 2010 13:05
Status : Hors ligne

Re: [..] Boucle

#3

Message par 17Cx »

Hello !

Oula, tu m'as mâché le boulot ;)
Je vais disséquer ce script pour bien tout comprendre, merci bien de ton aide !

Par contre .. si l'on ne connais pas le nombre de ligne que contient le fichier, comment ça se passe? :)
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..] Boucle

#4

Message par pop45 »

tu met 100 ligne et puis ca devrait le faire
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
17Cx
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mer. 20 janv. 2010 13:05
Status : Hors ligne

Re: [..] Boucle

#5

Message par 17Cx »

Ok ;)
Have a nice day

++
Voor0ck
Niveau 2
Niveau 2
Messages : 19
Enregistré le : jeu. 05 juin 2008 10:25
Status : Hors ligne

Re: [..] Boucle

#6

Message par Voor0ck »

Par contre .. si l'on ne connais pas le nombre de ligne que contient le fichier, comment ça se passe?
Pour la culture générale :

;Compter le nombre de lignes du fichier X
$CountLines = _FileCountLines("chemin du fichier X")
msgbox(0, "Nombre de lignes du fichier X : ", $CountLines)
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..] Boucle

#7

Message par pop45 »

Voor0ck a écrit :
Par contre .. si l'on ne connais pas le nombre de ligne que contient le fichier, comment ça se passe?
Pour la culture générale :

;Compter le nombre de lignes du fichier X
$CountLines = _FileCountLines("chemin du fichier X")
msgbox(0, "Nombre de lignes du fichier X : ", $CountLines)
Merci

Sa donne sa

Code : Tout sélectionner

$emplacement = @ScriptDir & "test.txt" ; tu met l'emplacement la

$file = FileOpen ( $emplacement , 0) ; ouvre le fichier
$x = _FileCountLines ( $emplacement )
for $l = 1 to $x ; nombre de ligne qu'il faut chercher
    $p = FileReadLine ( $file , $l ) ; lit la ligne
    If not @error Then ; verifie si il n'y a pas d'erreur
        If FileExists ( $p ) Then ; verifie si le fichier existe
            MsgBox (0,"" , $p , 2 ) ; msgbox ;-)
        EndIf
    EndIf
next ; retourn au debut

FileClose ( $file )
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
17Cx
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mer. 20 janv. 2010 13:05
Status : Hors ligne

Re: [..] Boucle

#8

Message par 17Cx »

Re,
Hey merci pour l'astuce.

a noter qu'il faut inclure File.au3

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

Re: [R] Boucle

#9

Message par Tlem »

Pour la culture générale (aussi), au lieu d'utiliser _FileCountLines(), il est possible d'utiliser la macro @error après le FileReadLine() (comme dans l'exemple de cette commande).
Cela évite un Include et c'est surtout plus logique puisque @error renvoi -1 si il n'y à plus de lignes. ;)
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é".
Répondre