Bonjour,
InputBox() renvoi une chaine et non un tableau, donc la première boucle ($j) ne peut pas fonctionner et ne sert à rien !
Ensuite cette ligne :
contient plusieurs erreurs. Tout d'abord le Z n'a rien à faire ici (ni ailleurs). Ensuite le "
Then" et le "
If exist" sont de trop pour plusieurs raisons.
La syntaxe d'une boucle est :
Code : Tout sélectionner
For $i In $X
; Ligne de code 1
; Ligne de code 2
; Ligne de code x
Next
ou
Code : Tout sélectionner
For $i = 1 To $x
; Ligne de code 1
; Ligne de code 2
; Ligne de code x
Next
Soit dans votre cas :
Code : Tout sélectionner
[color=#40FF00]For $k in $aArray[/color]
[color=#FF40BF]If Exist $k Then[/color]
Run(....)
[color=#FF40BF]EndIf[/color]
[color=#40FF00]Next[/color]
Maintenant, dans ce code, la condition "
If Exist $k" est totalement inutile puisque $aArray contient une liste de lecteurs existants (retourné par le
DriveGetDrive()), il est donc inutile de tester quelque chose qui existe.
Concernant le reste de votre code, d'après mes déduction, vous comptez rechercher les fichiers contenant tout ou partie de ce qui à été saisi au départ. Donc pour cela vous allez devoir mettre en forme les mots demandés sous forme de tableau.
Imaginons la recherche saisie comme ceci :
Là pas de problème particulier, on va décomposer la ligne selon les espaces, mais si la recherche est de la forme
Là ça ne va plus aller, car si on décompose selon les espaces, on aura 3 fois le mot Fichier puis les nombres 1, 2 et 3. Vous devez donc déterminer un séparateur spécifique qu'il n'est pas possible de trouver dans le nom d'un fichier. Généralement le caractère '|' fait très bien l'affaire.
Vous devez donc revoir le code de votre question comme ceci :
Code : Tout sélectionner
$sAnswer = InputBox("Question", "Entrez vos recherches séparées par le caractère |", "", "")
A partir de là, $answer pourra être de la forme :
ceci nous permet à l'aide de la commande
StringSplit(), de transformer une suite de chaines de caractères séparées par un caractère spécial en un tableau (en vue de faire une boucle plus simplement qu'avec une chaine). Ce qui nous donne :
Code : Tout sélectionner
#include <Array.au3> ; Cette ligne n'est là que pour la démonstration
$sAnswer = InputBox("Question", "Entrez vos recherches séparées par le caractère |", "", "")
MsgBox(32, "Chaine", "Voici la recherche sous forme de chaine : " & @LF & $sAnswer) ; Cette ligne n'est là que pour la démonstration
$aAnswer = StringSplit($sAnswer, "|")
_ArrayDisplay($aAnswer) ; Cette ligne n'est là que pour la démonstration
Comme vous pouvez le constater si vous saisissez une recherche du genre "Mot 1|Mot2|Mot 3", la dernière ligne vous affiche un tableau comme ceci :
Nous avons donc un tableau contenant dans l'élément [0] le nombre total de ligne (sans la ligne 0), puis dans l'éléments [1] la chaine "Mot 1", dans l'élément [2] la chaine "Mot2" et dans l'élément [3] la chaine "Mot 3". Vous allez donc pouvoir faire une recherche pour chacun de ces éléments comme ceci :
Code : Tout sélectionner
$sAnswer = InputBox("Question", "Entrez vos recherches séparées par le caractère |", "", "")
$aAnswer = StringSplit($sAnswer, "|")
; Ici on vérifie que $aAnswer est bien un tableau, sinon le reste du code risque de faire planter le script.
If IsArray($aAnswer) Then
; On démarre la boucle de l'élément [1] au dernier puisque $aAnswer[0] contien le nombre total d'éléments.
; Généralement on utilise Ubound($Tableau) - 1 car Ubound renvoi le nombre total d'élément y compris l'élément [0].
For $i = 1 To $aAnswer[0]
; $aAnswer[$i] sera tour a tour $aAnswer[1], $aAnswer[2] puis $aAnswer[3] puisque $i est incrémenté de 1 à chaque tour de boucle.
MsgBox(32, "Info", "La chaine à rechercher est : " & $aAnswer[$i])
; Le next permet de continuer la boucle tant qu'elle n'est pas finie.
Next
; EndIf termine la condition de "IsArray($aAnswer) Then"
EndIf
Voilà pour la première partie.

Essayez de bien assimiler ceci en copiant les codes donnés et en les testant. On voit la suite dès que vous êtes prêt.
