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