Page 1 sur 1
[R] Une fonction de recherche
Posté : sam. 02 avr. 2011 16:41
par servabat
Bonjour,
j'ai un petit probleme avec une fonction de recherche de fichier que j'aimerais utiliser pour un programme de désinfection.
Je ne comprend vraiment pas où ça bloque !!! Bref, voila la fonction :
► Afficher le texteLe code
Code : Tout sélectionner
#Include <array.au3>
#Include <Process.au3>
#Include <File.au3>
Func _Recherche($hPath, $filtre = "*.*", $rofob = 0)
Local $oFSO = ObjCreate("Scripting.FileSystemObject"), $sTFolder
$sTFolder = $oFSO.GetSpecialFolder(2)
Local $resultemp = @TempDir & $oFSO.GetTempName
;Si parametres mal choisis, alors change
If Not FileExists($hPath) Then Return SetError(1)
If $filtre = Default Then $Filtre = "*.*"
If $rofob = Default Then $rofob = 0
;Mauvais caractères (ne peuvent pas être recherchés
Local $charwbug[6] = ["/", "\", ":", "<", ">", "|"]
$filtre = StringRegExpReplace($filtre, '\s*;\s*', ';')
If StringRight($hPath, 1) <> '\' Then $hPath &= '\'
For $i = 0 To 5
If StringInStr($filtre, $charwbug[$i]) Then Return SetError(2)
Next
If StringStripWS($filtre, 8) = '' Then Return SetError(2)
If Not ($rofob = 0 Or $rofob = 1 Or $rofob = 2) Then Return SetError(3)
If $rofob = 0 Then
RunWait(_RunDos('dir ' & $hPath & '\ /s /b | find "' & $filtre & '" > ' & $resultemp))
EndIf
If $rofob = 1 Then
RunWait(_RunDos('dir ' & $hPath & '\ /s /A:D /b | find "' & $filtre & '" > ' & $resultemp))
EndIf
If $rofob = 2 Then
RunWait(_RunDos('dir ' & $hPath & '\ /s /A:-D /b | find "' & $filtre & '" > ' & $resultemp))
EndIf
Global $arresult
Local $nblines = _FileCountLines($resultemp)
Local $nblinestt = $nblines + 1
Global $arresult[$nblinestt]
$arresult[0] = $nblines
for $l = 1 to $nblines
$readed = FileReadLine($resultemp, $l)
If not @error Then
$arresult[$l] = $readed
EndIf
Next
Return $arresult
EndFunc
Normalement, quand je fait
Code : Tout sélectionner
$array1 = _Recherche(@HomeDrive, $fts)
if @error = 1 Then MsgBox(0, "Erreur !", "Répertoire non existant")
if @error = 2 Then MsgBox(0, "Erreur !", "Recherche contient des caratères incorrects")
if @error = 3 Then MsgBox(0, "Erreur !", "Type de recherche spécifié incorrect")
_ArrayDisplay($array1, "Les fichiers trouvés sonts :")
Le script devrait me retourner ce qui a été trouvé, mais il ne me retourne rien ...
Que faire ?
Merci D'avance de vos réponses,
Servabat
Re: [..] Une fonction de recherche
Posté : sam. 02 avr. 2011 17:33
par Tlem
C'est bien de vouloir faire sa fonction, mais perso, j'essaie de ne pas trop ré-inventer la roue.
Vous trouverez dans le lien ci-dessous plusieurs fonctions de recherche déjà largement éprouvées :
http://www.autoitscript.fr/forum/viewto ... f=21&t=479
Je vous conseil évidement la dernière.

Re: [..] Une fonction de recherche
Posté : sam. 02 avr. 2011 18:05
par servabat
Bonjour,
Merci beaucoup pour ces liens, en effet je n'avais pas vus la section Fonctions et UDF du forum !
Merci de votre aide !
Servabat