papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Rechercher un fichier par son nom Sam 11 Jan 2014 - 18:28 | |
| Salut tout le monde. Vous avez plusieurs fichiers enregistrés sur les diverses unités de votre PC (C : , D :, I :, etc..) et portant le même nom mais avec des extensions différentes. Par exemple : panoramic.exe, panoramic.txt, panoramic.jpg, panramic.xxx, panoramic.yyy, etc. Seulement vous avez oublié où se trouve l’un d’eux. Vous devez donc faire une recherche. Par exemple, sous Windows, vous faites Démarrer --- > Rechercher Puis vous fournissez les informations requises (ce que vous voulez chercher et dans quelle unité) et lancez la recherche. Au bout de quelques instants vous aurez la réponse qui peut vous satisfaire ou non. Le code suivant va vous simplifier la tâche. Lancez le programme. Il vous sera demandé d’entrer la lettre du lecteur de la recherche : Vous tapez une lette de A à Z ou bien le symbole * pour que la recherche se fasse sur toutes les unités du PC. (vous avez la possibilité d’arrêter en cliquant sur le bouton AnnulerPuis, il vous sera demandé de saisir le nom du fichier à rechercher : tapez par exemple panoramic (ou tout autre nom de fichier que vous voulez). Validez votre saisie. La recherche commence et peut durer un certain temps plus ou moins long selon l’importance de la recherche. Finalement, comme récompense, votre navigateur par défaut s’ouvre sur une page où un beau tableau s’affiche avec le résultat de la recherche. Bref : tout est expliqué dans le code. - Cliquez ici:
- Code:
-
rem ============================================================================ rem SearchFileByName.bas rem Par Papydall rem ============================================================================ ' Pour rechercher des fichiers par leurs noms et générer le résultat de recherche ' dans un tableau en HTML en citant les informations sur ces fichiers tels que ' leurs chemins,la date de création,la date de modification, la taille et leurs ' attributs. ' si la recherche comporte des fichiers images de différents types, elles seront ' affichées en miniatures. rem ============================================================================ rem Appel : SearchFileByName() SearchFileByName() end rem ============================================================================ rem Le programme vous demande de saisir la lettre (A à Z) du lecteur dans lequel rem la recherche se fera. rem Si vous voulez que la recherche se fera dans tous les lecteurs présents sur rem le PC, saisissez le caractère étoile (*). rem ------------------------------------------- rem Puis, le programme vous demande la saisie du fichier à rechercher rem tapez le nom SANS EXTENTION. rem Exemple: rem pour rechercher tous les fichiers qui se nomment PANORAMIC et qui peuvent se rem trouver sur n'importe quel lecteur : rem saisissez * à la 1ère question et panoramic à la seconde. rem La casse est sans importance. rem Le résultat de la sortie se trouvera dans un fichier "Recherche.html" rem qui se trouvera dans le même dossier où se trouve ce programme. rem Puis le programme lance ce fichier (Recherche.html) qui ouvrira votre rem navigateur par défaut (par exemple Google Chrome) et affichera une page rem contenant un tableau où sont indiquées toutes les informations concernant rem les fichiers trouvés. rem Si la recherche porte sur des fichiers images,des miniatures seront affichées rem La recherche peut durer quelques secondes ou quelques minutes (selon les cas). rem Si la recherche porte sur plusieurs dizaines ou centaines de fichiers et sur rem tous les lecteurs du PC, la tâche pourrait durer assez longtemps. rem Attendez l'affichage du message Terminé.
rem ============================================================================ SUB SearchFileByName() dim_local f$, q$ f$ = "C:\temp\SearchFileByName.vbs" : ' A adapter selon vos besoins q$ = chr$(34) hide 0 : FILE_OPEN_WRITE 1, f$ ' Création du script FILE_WRITELN 1, "Dim fso, OutFile, sDrv, sFName, sReport, sFile, sTitle ,strHTML" FILE_WRITELN 1, "sTitle = " + q$ + "Recherche des fichiers par leurs noms : " + q$ FILE_WRITELN 1, "Set fso = CreateObject(" + q$ + "Scripting.FileSystemObject" + q$ + ")" FILE_WRITELN 1, "OutFile = " + q$ + "Recherche.html" + q$ FILE_WRITELN 1, "If fso.FileExists(OutFile) Then fso.DeleteFile(OutFile)" FILE_WRITELN 1, "Set sReport = fso.OpenTextFile(OutFile, 8, True)" FILE_WRITELN 1, "sDrv = InputBox(" + q$ + "Entrez la lettre du lecteur de la recherche" + q$ + " & vbcrlf&_" file_writeln 1,q$+ "( lettre seulement A à Z )"+ q$ + " & vbcrlf & vbcrlf&_ " FILE_WRITELN 1, q$+"Pour rechercher dans tous les lecteurs locaux " + q$ + "& vbcrlf & "+ q$ + "Saisissez * ( Symbole ETOILE)"+ q$ + ", sTitle)" FILE_WRITELN 1, "If sDrv = " + q$ + q$ + " Then WScript.Quit" FILE_WRITELN 1, "sFName = InputBox (" + q$ + "Entrez le nom du fichier à rechercher" + q$ + "& vbcrlf & "+ q$ + "(sans extension)"+ q$ + ", sTitle)" FILE_WRITELN 1, "If sFName = " + q$ + q$ + " Then WScript.Quit" FILE_WRITELN 1, "strHTML=" + q$ + "<html><body text=white><style type='text/css'>"+ q$ +"&_" FILE_WRITELN 1, q$ + "a:link {color: #F19105;}" + q$ + "&_" FILE_WRITELN 1, q$ + "a:visited {color: #F19105;}" + q$ + "&_" FILE_WRITELN 1, q$ + "a:active {color: #F19105;}" + q$ + "&_" FILE_WRITELN 1, q$ + "a:hover {color: #FF9900;background-color: rgb(255, 255, 255);}" + q$ + "&_" FILE_WRITELN 1, q$ + q$ + "</style>" + q$ + q$ FILE_WRITELN 1, "strHTML=strHTML &" + q$ + "<center><h2><B> <font color=Red>[COUNT] </font>Fichiers Trouvés dont le Nom est <font color=red>" +q$+q$+q$+"& sFName &" +q$+q$+q$+" </font> sur le lecteur <font color=red>"+ q$ + "& UCase(sDrv) &"+q$+":</B></font></h2></center>"+ q$ +"&_" FILE_WRITELN 1, q$ + "<center><body bgcolor=#1234568><table border='3' cellpadding='1' style='border-collapse: collapse; font size:11pt' bordercolor='#CCCCCC' width='100%' id='Table1'></center>"+ q$ +"& _" FILE_WRITELN 1, q$ + "<td><center><strong>Chemin</strong></center></td>"+ q$ +"&_" FILE_WRITELN 1, q$ + "<td><center><strong>Date de Création</strong></center></td>"+ q$ +"& _" FILE_WRITELN 1, q$ + "<td><center><strong>Date de Modification</strong></center></td>"+ q$ +"&_" FILE_WRITELN 1, q$ + "<td><center><strong>Taille</strong></center></td>"+ q$ + "&_" FILE_WRITELN 1, q$ + q$ + "<td><center><strong>Attributs</strong></center></td>"+ q$ + q$ FILE_WRITELN 1, "If sDrv = "+ q$ +"*" + q$+ " Then" FILE_WRITELN 1, "Dim d,dc,racine" FILE_WRITELN 1, " Set fso = CreateObject("+ q$ + "Scripting.FileSystemObject"+ q$ +")" FILE_WRITELN 1, " Set dc = fso.Drives" FILE_WRITELN 1, " For Each d in dc" FILE_WRITELN 1, " racine = d.Driveletter & "+ q$ + ":" + q$ FILE_WRITELN 1, " If d.IsReady Then" FILE_WRITELN 1, " GetResults racine , sFName" FILE_WRITELN 1, " End If" FILE_WRITELN 1, " Next" FILE_WRITELN 1, "Else" FILE_WRITELN 1, "GetResults sDrv & "+ q$ + ":"+ q$ +", sFName" FILE_WRITELN 1, "End If" FILE_WRITELN 1, "sReport.WriteLine strHTML &"+ q$ +"</table></body></html>"+ q$ FILE_WRITELN 1, "Wscript.CreateObject("+ q$ +"WScript.Shell"+ q$ +").Run OutFile" FILE_WRITELN 1, "Sub GetResults(drv, fname)" FILE_WRITELN 1, "Dim sWQL, oFile, sAttrib,sFilePath,size" FILE_WRITELN 1, "ext = Array("+ q$ +"png"+ q$ +","+ q$ +"jpg"+","+ q$ +","+ q$ +"jpeg"+ q$ +","+ q$ +"gif"+ q$ +","+ q$ +"bmp"+ q$ +","+ q$ +"psd"+ q$ +","+ q$ +"tif"+ q$ +")" FILE_WRITELN 1, "sWQL = "+ q$ +" select * from cim_datafile where Drive='"+ q$ +"& _" FILE_WRITELN 1, "drv & "+ q$ +"' AND FileName = '"+ q$ +" & fname & "+ q$ +"'"+ q$ FILE_WRITELN 1, "Results = 0" FILE_WRITELN 1, "For Each oFile In GetObject("+ q$ +"winmgmts:"+ q$ +").execquery(sWQL)" FILE_WRITELN 1, "Results = Results + 1" FILE_WRITELN 1, "sFile = oFile.Name" FILE_WRITELN 1, "Set f = fso.GetFile(sFile)" FILE_WRITELN 1, "SizeKo = Round(FormatNumber(f.Size)/(1024),1) & "+ q$ +" Ko"+ q$ +" 'Taille en Ko avec 1 chiffre après la Virgule" FILE_WRITELN 1, "SizeMo = Round(FormatNumber(f.Size)/(1048576),1) & " + q$ +"Mo"+ q$ +" 'Taille en Mo avec 1 chiffre après la Virgule" FILE_WRITELN 1, "SizeGo = Round(FormatNumber(f.Size)/(1073741824),1) & "+ q$ +" Go"+ q$ +" 'Taille en Go avec 1 chiffre après la Virgule" FILE_WRITELN 1, "If f.size < 1024 Then" FILE_WRITELN 1, "Size = f.size & "+ q$ +" Octets"+ q$ FILE_WRITELN 1, "elseif f.size < 1048576 Then" FILE_WRITELN 1, "Size = SizeKo" FILE_WRITELN 1, "elseif f.size < 1073741824 Then" FILE_WRITELN 1, "Size = SizeMo" FILE_WRITELN 1, "else" FILE_WRITELN 1, "Size = SizeGo" FILE_WRITELN 1, "end if" FILE_WRITELN 1, "sFilePath = f.Path" FILE_WRITELN 1, "If oFile.Archive Then sAttrib = "+ q$ +"Archive "+ q$ FILE_WRITELN 1, "If oFile.Compressed Then sAttrib = sAttrib & "+ q$ +" Compressé " + q$ FILE_WRITELN 1, "If oFile.Encrypted Then sAttrib = sAttrib & "+ q$ +" Crypté " + q$ FILE_WRITELN 1, "If oFile.Hidden Then sAttrib = sAttrib & "+ q$ +" Caché " + q$ FILE_WRITELN 1, "If oFile.System Then sAttrib = sAttrib & " + q$ +"Système " + q$ FILE_WRITELN 1, "If oFile.Readable Then sAttrib = sAttrib & " + q$ +"Lecture " + q$ FILE_WRITELN 1, "If oFile.Writeable Then sAttrib = sAttrib & "+ q$ +" Ecriture " + q$ FILE_WRITELN 1, "If UCase(ext(0)) = UCase(fso.GetExtensionName(oFile.Name)) or UCase(ext(1)) = UCase(fso.GetExtensionName(oFile.Name))or UCase(ext(2)) = UCase(fso.GetExtensionName(oFile.Name)) or UCase(ext(3)) = UCase(fso.GetExtensionName(oFile.Name)) or UCase(ext(4)) = UCase(fso.GetExtensionName(oFile.Name)) or UCase(ext(5)) = UCase(fso.GetExtensionName(oFile.Name)) or UCase(ext(6)) = UCase(fso.GetExtensionName(oFile.Name)) Then" FILE_WRITELN 1, "ImgFileName = oFile.Name" FILE_WRITELN 1, "strHTML=strHTML & "+ q$ +"<tr><td><a target=_Blank href='"+ q$ +"& sFilePath _" FILE_WRITELN 1, "&"+ q$ +"'>"+ q$ +"&ImgFileName&"+ q$ +"<br><br><center><img src='"+ q$ +"& sFilePath &"+ q$ +"' border=1 height=80 width=100></center><br></td><td><center>"+ q$ +" & f.DateCreated & "+ q$ +"</center></td>"+ q$ +" & _" FILE_WRITELN 1, q$ + "<td><center>" + q$ + "& f.DateLastModified & "+ q$ +"</center></td><td><center>"+ q$ +"& Size & "+ q$ +"</center></td>"+ q$ +"&_" FILE_WRITELN 1, q$ + q$ + "<td><center>" + q$ + "& sAttrib & "+ q$ + "</center></td></tr>"+ q$ + q$ FILE_WRITELN 1, "else" FILE_WRITELN 1, "strHTML=strHTML & "+ q$ +"<tr><td><a target=_Blank href='"+ q$ +" & sFilePath & "+ q$ +"'>" + q$ +"& _" FILE_WRITELN 1, "sFilePath & "+ q$ +"</a></td><td><center>" + q$ +"& f.DateCreated & "+ q$ +"</center></td>"+ q$ +" & _" FILE_WRITELN 1, q$ + "<td><center>" + q$ +"& f.DateLastModified & "+ q$ +"</center></td><td><center>"+ q$ +"& Size & "+ q$ +"</center></td>"+ q$ +"&_" FILE_WRITELN 1, q$ + q$ + "<td><center>"+ q$ +" & sAttrib & "+ q$ +"</center></td></tr>" + q$+ q$ FILE_WRITELN 1, "end if" FILE_WRITELN 1, "Next" FILE_WRITELN 1, "strHTML = Replace(strHTML, "+ q$ +"[COUNT]"+ q$ +", Results)" FILE_WRITELN 1, "End Sub" FILE_CLOSE 1 ' Exécution du script EXECUTE_WAIT f$ ' Suppression du script FILE_DELETE f$ MESSAGE "Terminé" TERMINATE END_SUB rem ===========================================================================
J'espère que ce code vous plaira. | |
|
Francis-mr
Nombre de messages : 186 Date d'inscription : 26/11/2012
| Sujet: Re: Rechercher un fichier par son nom Sam 11 Jan 2014 - 19:05 | |
| Bonjour Bravo, très efficace ce code de recherche. Une petite observation, il manque peut être un message "Recherche en cours...", car on a un grand moment de solitude en cas de recherche sur plusieurs lecteurs. | |
|