'------------------------------------------------------ ' Exploration récursive de répertoires avec recherche ' de fichiers de taille supérieure à une valeur donnée ' ' JC BELLAMY © 2002 '------------------------------------------------------ Dim shell, fso, args Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set args=Wscript.Arguments na=args.count if na<3 then mess="Paramètres manquants!" & VBCRLF syntaxe end if source=args(0) ext=lcase(args(1)) If left(ext,1)="." Then ext=mid(ext,2) ext=Replace(ext,".","\.") ext=Replace(ext,"$","\$") ext=Replace(ext,"?",".") ext=Replace(ext,"*","[\w\.]*") & "$" taille=args(2) If not IsNumeric(Taille) Then mess="Valeur minimale invalide" & VBCRLF syntaxe End If taille=cint(taille) unite="o" If na=4 Then unite=left(args(3),1) Select Case lcase(unite) Case "o" diviseur=1 Case "k" diviseur=1024 Case "m" diviseur=1024*1024 Case "g" diviseur=1024*1024*1024 Case else mess="Unité invalide" & VBCRLF syntaxe End Select if not fso.FolderExists(source) then mess="Dossier initial """ & source & """ inexistant" & VBCRLF syntaxe end if result="" nf=0 testfolder(source) wscript.echo Result wscript.quit '-------------------------------------------------------------------- Function RegExpTest(patrn, strng) RegExptest=false Dim regEx, Match, Matches Set regEx = New RegExp regEx.Pattern = patrn regEx.IgnoreCase = True regEx.Global = false Set Matches = regEx.Execute(strng) If matches.count>0 Then RegExptest=true End Function '-------------------------------------------------------------------- Sub testfolder(dossier) If right(dossier,1)<>"\" Then dossier=dossier & "\" Dim fs,collfolders,collfiles,folder,file, attrib Set fs=fso.GetFolder(dossier) Set collfiles=fs.Files 'Exploration des fichiers du dossier for each file in collfiles curfile=file.name p=instrrev(curfile,".") If p>0 Then extension=mid(curfile,p+1) else extension="" If RegExpTest(ext,extension) Then s=file.Size / diviseur If s>=taille Then result=result & dossier & curfile & VBCRLF nf=nf+1 End If End If next Set collfolders=fs.SubFolders ' Exploration des sous-dossiers for each folder in collfolders curfolder=dossier & folder.Name testfolder(curfolder) next End Sub '-------------------------------------------------------------------- Sub syntaxe mess=mess & "Syntaxe :" & VBCRLF mess=mess & " minsize []" & VBCRLF mess=mess & " dossier : dossier initial de la recherche" & VBCRLF mess=mess & " (entre guillemets s'il y a des espaces)" & VBCRLF mess=mess & " extension : extension des fichiers à rechercher" & VBCRLF mess=mess & " - avec ou sans le point initial" & VBCRLF mess=mess & " - peut comporter les caractères génériques * et ?"& VBCRLF mess=mess & " taille : taille minimale recherchée" & VBCRLF mess=mess & " unité : o(octets), k(ko), m(Mo), g(Go)" & VBCRLF mess=mess & " (par défaut : octets)" & VBCRLF mess=mess & "Exemple :" & VBCRLF mess=mess & " minsize d:\winnt log 2 m" & VBCRLF wscript.echo mess wscript.quit End Sub '--------------------------------------------------------------------