Page 1 sur 1

[R] Boucle

Posté : mer. 20 janv. 2010 13:17
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
++

Re: [..] Boucle

Posté : mer. 20 janv. 2010 13:31
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

Re: [..] Boucle

Posté : mer. 20 janv. 2010 13:55
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? :)

Re: [..] Boucle

Posté : mer. 20 janv. 2010 14:25
par pop45
tu met 100 ligne et puis ca devrait le faire

Re: [..] Boucle

Posté : mer. 20 janv. 2010 14:33
par 17Cx
Ok ;)
Have a nice day

++

Re: [..] Boucle

Posté : mer. 20 janv. 2010 14:50
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)

Re: [..] Boucle

Posté : mer. 20 janv. 2010 15:40
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 )

Re: [..] Boucle

Posté : mer. 20 janv. 2010 18:17
par 17Cx
Re,
Hey merci pour l'astuce.

a noter qu'il faut inclure File.au3

++

Re: [R] Boucle

Posté : jeu. 21 janv. 2010 21:15
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. ;)