Page 1 sur 1

[R] Chercher fichiers dans répertoires

Posté : mer. 11 août 2010 17:40
par JohnWayne
Bonjour à tous,

Il y a peu de temps j'ai fait une demande pour chercher des valeurs dans des clés de registres préalablement définies. ( c'est sur ce sujet ) et Thlem m'avait donné une solution qui marche très bien.

Cependant je me suis dis que j'allais faire quelques choses de similaires pour rechercher des fichiers dans des répertoires préalablement définis. J'ai fait ce code :

Code : Tout sélectionner

Global $File[4] = [_
"idol","ben","start","part",_
]

Global $Dir[2] = [@ProgramFilesDIr,@AppDataDir]

for $1 = 0 to Ubound  ($file)  -1 ; Je retourne la dimension du tableau $file = 1ere boucle
for $2 = 0 to Ubound  ($Dir) -1 ; Je retourne la dimension du tableau $Dir = 2eme boucle

$Lop = FileExists($Dir[$1]& $file[$2])

if $lop then 

Local $First 

$First = FileFindFirstFile($lop)

If not $first = -1 Or Not @error then 
While 1
Local $next  
$next = FileFindNextFile($first)
if @error then exitloop
FilewriteLine(@homedrive & "\Test.txt", $Next & " Trouvé") 
Wend
         Endif
Else
         Endif
Next

For $1 = 0 to 2

Next

Le problème c'est pour le FileExists. La syntaxe n'est pas la bonne, or je voulais savoir comment contourner ce problème ou si il y avait une fonction FileExists plus avancée ?

Merci,

JW

Re: [...] Chercher fichiers dans répertoires

Posté : mer. 11 août 2010 17:45
par SrBelial
il manque une chose indispensable si tu veux que la fonction FileExists fonctionne :
tu n'as pas ajouté de '\' entre le nom du répertoire et le nom du fichier ....

les macros du style @AppDataDir sont très pratique, mais elle renvoient toujours un chemin sans backslash final ....
du coup la concaténation avec le nom de fichier se passe mal
(ça donne par exemple :
C:\Documents and Settings\Administrateur\Application DataTest.txt
au lieu de
C:\Documents and Settings\Administrateur\Application Data\Test.txt)

essaie avec ça et reviens nous voir si ça marche toujours pas ! ^__^

Re: [...] Chercher fichiers dans répertoires

Posté : mer. 11 août 2010 18:02
par JohnWayne
Salut

Si je mais ceci :

Code : Tout sélectionner

$Lop = FileExists($dir[$1]& "\"& $File[$2])
cela me met en erreur :

Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$Lop = FileExists($dir[$1]& "\"& $File[$2])
$Lop = FileExists(^ ERROR


Mais là si je lit bien sa serait la variable $dir qui serait en cause non ?

Merci et a++

Re: [...] Chercher fichiers dans répertoires

Posté : mer. 11 août 2010 20:28
par Tlem
Ce lien vous sera certainement très utile : http://www.autoitscript.fr/forum/viewto ... f=21&t=479

Re: [...] Chercher fichiers dans répertoires

Posté : mer. 11 août 2010 20:45
par JohnWayne
Salut

Humm rechercher les fichiers grâce à la fontion FileListToArrayXT, j'aurais du y penser :D

Je test et vous tient au courant.

Re: [...] Chercher fichiers dans répertoires

Posté : mer. 11 août 2010 20:56
par SrBelial
oui bonne idée !
sinon pour en finir avec la fonction FileExists, le problème vient en effet de votre variable $dir ...
le message d'erreur nous dit que soit ce n'est pas une variable de type tableau, soit vous essayez d'accéder à un index supérieur ou égale à la longueur du tableau ...

Re: [...] Chercher fichiers dans répertoires

Posté : mer. 11 août 2010 22:03
par JohnWayne
Salut

En effet c'est parfait pour moi :D Par contre j'ai une question :

- Dans cette fonction :

Code : Tout sélectionner

#include<Array.au3>
#include<FileListToArrayXT.au3>

$ar_Array = _FileListToArrayXT (@programfilesdir, "01*;2*", 0, 2, True, "Temp")
_ArrayDisplay($ar_Array, "Liste fichier")
=> J'aimerais qu'il me trouve tous les éléments commençant par 01 et 2 mais seulement dans C:\programfiles\ et non dans C:\programfiles\blabla\

Je sais pas si tu vois ce que je veux dire ?

Merci et @++

Re: [...] Chercher fichiers dans répertoires

Posté : mer. 11 août 2010 22:08
par Tlem
Hé bien dans ce cas, enlevez la récursivité (Quatrième paramètre). :wink:

Re: [...] Chercher fichiers dans répertoires

Posté : mer. 11 août 2010 22:19
par JohnWayne
Salut

Et bien ma fois c'est la classe. C'était le paramètre que j'avais pas compris. Enfaite la récursivité sert à rechercher sur tous les fichiers/dossiers présents dans le répertoire que l'on a indiqué ?

Merci encore,

JW

Re: [...] Chercher fichiers dans répertoires

Posté : jeu. 12 août 2010 01:24
par Tlem
A votre avis !!! :roll:

Re: [...] Chercher fichiers dans répertoires

Posté : jeu. 12 août 2010 11:41
par JohnWayne
J'ai encoure loupé une occasion de fermer ma gueule moi.

Sujet résolu.