Code : Tout sélectionner
#include <file.au3>
#include <Array.au3>
#include <_FileListToArrayEx_v3.au3>
Msgbox(64,'ToolSearch by Labougie','Cet outil analyse soit tous les lecteurs soit celui de ton choix.')
Global $LogFile = (@HomeDrive & "\search.txt")
$OS = RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName")
$SP = RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CSDVersion")
Global $answer, $sSearchDrives, $sLabel, $Recherche, $sRapport
Global $sDrive, $aDrive, $TmpDrives, $i, $j
Local $aArray = DriveGetDrive("ALL")
Local $sLabel = DriveGetLabel(@HomeDrive & "\")
;_ArrayDisplay($aArray)
If FileExists ($LogFile) then Filedelete ($LogFile)
;================================================= Mise en forme
FileWriteLine($LogFile,"ToolSearch by © Labougie")
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"Outil lancé par: " & @UserName & " Depuis: [" & @ScriptDir & "] le: " & @MDAY &"-" & @MON &"-" & @YEAR &" à: " & @HOUR &":"& @MIN &":" & @SEC )
FileWriteLine($LogFile,"Système d'exploitation: " & $OS & " - " & $SP)
FileWriteLine($LogFile,"HardWare: " & " Cpu " & @CPUArch & " - " & " Système " & @OSArch)
Local $answer = InputBox("Question", "Quel(s) mot(s) recherches tu ?" & " Sépare les par un ""Pipe |"", (Alt Gr + 6)" & " Exemple: test | Check", "", "")
;$answer = StringSplit($answer, "|")
;================================================= L'utilisateur ne rentre aucune donnée de recherche
If $answer = "" Then ; Si l'utilisateur a annulé la saisie on ferme.
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"La recherche a été annulée pour mauvaise saisie.")
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"=~=~=~=~=~=~=~=~ Nombre total pour la recherche ==> " & $answer & " " & " 0 Fichier(s) trouvé(s)=~=~=~=~=~=~=~=~")
FileWriteLine($LogFile,"")
FileWriteLine($LogFile, "Terminé le: " & @MDAY &"-" & @MON &"-" & @YEAR &" à: " & @HOUR &":"& @MIN &":" & @SEC )
ShellExecute($LogFile)
Exit
EndIf
;============= Contrôle sur la recherche, soit Fichier, soit Dossier, Soit Intégrale
Local $check = InputBox("Question", "Recherches tu un fichier ou un dossier?" & _
" F pour fichier" & _
" D pour dossier" & _
" * Recherche intégrale")
Switch $check ;============ Contrôle saisie sur le type de recherche
case "f" ;============ Recherche sur les fichiers
$aDrive = DriveGetDrive("All") ; attention le tableau $aDrive commence par le nombre d'éléments donc "For $var In $aDrive" n'est pas recommandé.
; Boucle de transformation du tableau des lecteurs en chaine de caractères.
For $i = 1 To $aDrive[0]
;If Not FileExists($aDrive[$i] & "\") Then ContinueLoop ; On vérifie si le lecteur est accessible.
$sDrive &= StringTrimRight($aDrive[$i], 1) ; on ne prend que la lettre (on supprime les :).
Next
; La question pour choisir le/les lecteurs de recherche.
$sSearchDrives = InputBox("Question", "Choisissez dans la liste suivante les lecteurs pour lesquels" & _
"vous voulez effecter une recherche. Tapez les lettres les unes à la suite des autres." & _
@CRLF & "Lecteur(s) disponible(s) : " & $sDrive)
$answer = StringSplit($answer, "|")
If IsArray($answer) Then
SplashTextOn ("", "Initialisation ..." , 500, 55, -1, -1, 49)
For $i = 1 To $answer[0]
; msgbox(0,"", "==" & $answer[$i] & "==")
$answer[$i] = StringStripWS($answer[$i], 3)
; msgbox(0,"", "==" & $answer[$i] & "==")
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"=~=~=~=~=~=~=~=~=~=~=~=~ Recherche pour les Fichiers " & _
""" " & $answer[$i] & " """ & " =~=~=~=~=~=~=~=~=~=~=~=~")
FileWriteLine($LogFile,"")
For $k in $aArray
If IsNumber($k) Then ContinueLoop
If DriveStatus($k & "\") = "NOTREADY" Then ContinueLoop
FileWriteLine($LogFile,"Recherche pour le lecteur " & $k &"\")
SplashTextOn ("", "Scanning " & $k , 500, 55, -1, -1, 49)
FileWriteLine($LogFile,"")
$Recherche = _FileListToArrayEx ($k & "\", "*" & $answer[$i] & "*.*", 0, 1)
If IsArray($Recherche) Then
For $j = 1 to $Recherche[0] ; parcourt le tableau
SplashTextOn ("", $Recherche[$j], 500, 55, -1, -1, 49)
FileWriteLine($LogFile, $Recherche[$j])
Next
EndIf
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"=~=~=~=~=~=~=~=~ Fin de la recherche ==> " & $Recherche[0] & " fichier(s) trouvé(s) " & " sur " & $k &" =~=~=~=~=~=~=~=~")
FileWriteLine($LogFile,"")
Next
Next
EndIf
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"=~=~=~=~=~=~=~=~ Nombre total pour la recherche ==> " & $answer[$i] & " " & " Fichier(s) trouvé(s)=~=~=~=~=~=~=~=~")
SplashOff()
FileWriteLine($LogFile,"")
FileWriteLine($LogFile, "Terminé le: " & @MDAY &"-" & @MON &"-" & @YEAR &" à: " & @HOUR &":"& @MIN &":" & @SEC )
ShellExecute($LogFile)
case "d" ;============ Recherche sur les dossiers
$aDrive = DriveGetDrive("ALL") ; attention le tableau $aDrive commence par le nombre d'éléments donc "For $var In $aDrive" n'est pas recommandé.
; Boucle de transformation du tableau des lecteurs en chaine de caractères.
For $i = 1 To $aDrive[0]
;If Not FileExists($aDrive[$i] & "\") Then ContinueLoop ; On vérifie si le lecteur est accessible.
$sDrive &= StringTrimRight($aDrive[$i], 1) ; on ne prend que la lettre (on supprime les :).
Next
; La question pour choisir le/les lecteurs de recherche.
$sSearchDrives = InputBox("Question", "Choisissez dans la liste suivante les lecteurs pour lesquels vous voulez effecter une recherche. Tapez les lettres les unes à la suite des autres." & @CRLF & "Lecteur(s) disponible(s) : " & $sDrive)
$answer = StringSplit($answer, "|")
If IsArray($answer) Then
SplashTextOn ("", "Initialisation ..." , 500, 55, -1, -1, 49)
For $i = 1 To $answer[0]
; msgbox(0,"", "==" & $answer[$i] & "==")
$answer[$i] = StringStripWS($answer[$i], 3)
; msgbox(0,"", "==" & $answer[$i] & "==")
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"=~=~=~=~=~=~=~=~=~=~=~=~ Recherche pour les dossiers " & _
""" " & $answer[$i] & " """ & " =~=~=~=~=~=~=~=~=~=~=~=~")
FileWriteLine($LogFile,"")
For $k in $aArray
If IsNumber($k) Then ContinueLoop
If DriveStatus($k & "\") = "NOTREADY" Then ContinueLoop
SplashTextOn ("", "Scanning Folders " & $k , 500, 55, -1, -1, 49)
FileWriteLine($LogFile,"")
$Recherche = _FileListToArrayEx ($k & "\", "*" & $answer[$i] & "*", 2, 2)
If IsArray($Recherche) Then
For $j = 1 to $Recherche[0] ; parcourt le tableau
SplashTextOn ("", $Recherche[$j], 500, 55, -1, -1, 49)
FileWriteLine($LogFile, $Recherche[$j])
Next
EndIf
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"=~=~=~=~=~=~=~=~ Fin de la recherche ==> " & $Recherche[0] & " dossier(s) trouvé(s) " & " sur " & $k &" =~=~=~=~=~=~=~=~")
Next
Next
EndIf
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"=~=~=~=~=~=~=~=~ Nombre total pour la recherche ==> " & $answer[$i] & " " & " Dossier(s) trouvé(s)=~=~=~=~=~=~=~=~")
SplashOff()
FileWriteLine($LogFile,"")
FileWriteLine($LogFile, "Terminé le: " & @MDAY &"-" & @MON &"-" & @YEAR &" à: " & @HOUR &":"& @MIN &":" & @SEC )
ShellExecute($LogFile)
case "*" ;============ Recherche complète, fichiers et dossiers
$aDrive = DriveGetDrive("ALL") ; attention le tableau $aDrive commence par le nombre d'éléments donc "For $var In $aDrive" n'est pas recommandé.
; Boucle de transformation du tableau des lecteurs en chaine de caractères.
For $i = 1 To $aDrive[0]
;If Not FileExists($aDrive[$i] & "\") Then ContinueLoop ; On vérifie si le lecteur est accessible.
$sDrive &= StringTrimRight($aDrive[$i], 1) ; on ne prend que la lettre (on supprime les :).
Next
; La question pour choisir le/les lecteurs de recherche.
$sSearchDrives = InputBox("Question", "Choisissez dans la liste suivante les lecteurs pour lesquels vous voulez effecter une recherche. Tapez les lettres les unes à la suite des autres." & @CRLF & "Lecteur(s) disponible(s) : " & $sDrive)
$answer = StringSplit($answer, "|")
If IsArray($answer) Then
SplashTextOn ("", "Initialisation ..." , 500, 55, -1, -1, 49)
For $i = 1 To $answer[0]
; msgbox(0,"", "==" & $answer[$i] & "==")
$answer[$i] = StringStripWS($answer[$i], 3)
; msgbox(0,"", "==" & $answer[$i] & "==")
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"=~=~=~=~=~=~=~=~=~=~=~=~ Recherche pour les Fichiers " & _
""" " & $answer[$i] & " """ & " =~=~=~=~=~=~=~=~=~=~=~=~")
FileWriteLine($LogFile,"")
For $k in $aArray
If IsNumber($k) Then ContinueLoop
If DriveStatus($k & "\") = "NOTREADY" Then ContinueLoop
SplashTextOn ("", "Scanning Files " & $k , 500, 55, -1, -1, 49)
FileWriteLine($LogFile,"")
$Recherche = _FileListToArrayEx ($k & "\", "*" & $answer[$i] & "*.*", 0, 1)
If IsArray($Recherche) Then
For $j = 1 to $Recherche[0] ; parcourt le tableau
SplashTextOn ("", $Recherche[$j], 500, 55, -1, -1, 49)
FileWriteLine($LogFile, $Recherche[$j])
Next
EndIf
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"=~=~=~=~=~=~=~=~ Fin de la recherche ==> " & $Recherche[0] & " fichier(s) trouvé(s) " & " sur " & $k &" =~=~=~=~=~=~=~=~")
Next
Next
EndIf
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"=~=~=~=~=~=~=~=~ Nombre total pour la recherche ==> " & $answer[$i] & " " & " Fichier(s) trouvé(s)=~=~=~=~=~=~=~=~")
; $aDrive = DriveGetDrive("ALL") ; attention le tableau $aDrive commence par le nombre d'éléments donc "For $var In $aDrive" n'est pas recommandé.
; Boucle de transformation du tableau des lecteurs en chaine de caractères.
For $i = 1 To $aDrive[0]
;If Not FileExists($aDrive[$i] & "\") Then ContinueLoop ; On vérifie si le lecteur est accessible.
$sDrive &= StringTrimRight($aDrive[$i], 1) ; on ne prend que la lettre (on supprime les :).
Next
; La question pour choisir le/les lecteurs de recherche.
;$sSearchDrives = InputBox("Question", "Choisissez dans la liste suivante les lecteurs pour lesquels vous voulez effecter une recherche. Tapez les lettres les unes à la suite des autres." & @CRLF & "Lecteur(s) disponible(s) : " & $sDrive)
;$answer = StringSplit($answer, "|")
If IsArray($answer) Then
SplashTextOn ("", "Initialisation ..." , 500, 55, -1, -1, 49)
For $i = 1 To $answer[0]
; msgbox(0,"", "==" & $answer[$i] & "==")
$answer[$i] = StringStripWS($answer[$i], 3)
; msgbox(0,"", "==" & $answer[$i] & "==")
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"=~=~=~=~=~=~=~=~=~=~=~=~ Recherche pour les dossiers " & _
""" " & $answer[$i] & " """ & " =~=~=~=~=~=~=~=~=~=~=~=~")
FileWriteLine($LogFile,"")
For $k in $aArray
If IsNumber($k) Then ContinueLoop
If DriveStatus($k & "\") = "NOTREADY" Then ContinueLoop
SplashTextOn ("", "Scanning Folders " & $k , 500, 55, -1, -1, 49)
FileWriteLine($LogFile,"")
$Recherche = _FileListToArrayEx ($k & "\", "*" & $answer[$i] & "*", 2, 2)
If IsArray($Recherche) Then
For $j = 1 to $Recherche[0] ; parcourt le tableau
SplashTextOn ("", $Recherche[$j], 500, 55, -1, -1, 49)
FileWriteLine($LogFile, $Recherche[$j])
Next
EndIf
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"=~=~=~=~=~=~=~=~ Fin de la recherche ==> " & $Recherche[0] & " dossier(s) trouvé(s) " & " sur " & $k &" =~=~=~=~=~=~=~=~")
Next
Next
EndIf
FileWriteLine($LogFile,"")
FileWriteLine($LogFile,"=~=~=~=~=~=~=~=~ Nombre total pour la recherche ==> " & $answer[$i] & " " & " Dossier(s) trouvé(s)=~=~=~=~=~=~=~=~")
SplashOff()
FileWriteLine($LogFile,"")
FileWriteLine($LogFile, "Terminé le: " & @MDAY &"-" & @MON &"-" & @YEAR &" à: " & @HOUR &":"& @MIN &":" & @SEC )
ShellExecute($LogFile)
case else ;============ Mauvais caractères sur le choix Fichier Dossier Intégrale
MsgBox(4096, "Contrôle saisie", "Ne pas saisir n'importe quoi, recommence.")
EndSwitch