AntiGuide: DoMd5Recursif



PagePrincipale :: DerniersChangements :: ParametresUtilisateur :: Vous êtes 216.73.216.159 :: Signaler un abus :: le: 20250717 18:21:32
20100909
voir le projet détaillé: PreventionDisqueDur.
résumé:
Le programme proposé ici enregistre toutes les signatures MD5 des fichiers présents sur votre disque dur lors de son exécution.
Lors d'une récupération future, il sera ainsi possible d'associer à un fichier découvert son ancien nom et de le replacer dans la hiérarchie des fichiers.
le fichier créé est horodaté!

Pour la récupération: DoMd5Recup

version ="0.1.3"
' détailler "autres"
depart=now ' pour récap finale
sep=" " ' mettre >" " pour interclassement avec recup

dim fo
nomout=fmtdate(depart)

set fs=createobject("scripting.filesystemobject")
set fo=fs.createtextfile(nomout & ".log",true)

nbfiles=0 ' nb fichiers lus
nbfolders=0 ' nb dossiers
nbdeny=0 ' nb de refus
lontot=0 ' somme des longueurs

racine="c:\"
fo.writeline "<DEB>  Calcul MD5 V" & version & ", etc... " &  fmtdate(depart ) & " " & racine

dodir racine 
fo.writeline "<FIN> " &  fmtdate(now ) & " départ: " & depart &  " fin: " & now &  " vus: " & nbfiles & " autres: " & nbdeny & " dossiers: " & nbfolders & " size: " & lontot
fo.close
msgbox "départ: " & depart & vbcrlf & "fin: " & now & vbcrlf & "terminé vus: " & nbfiles & " autres: " & nbdeny & vbcrlf & "dossiers: " & nbfolders & vbcrlf & "size: " & lontot

' c'est fini

function fmtdate (d)
fmtdate=Format (d,"yyyymmdd_hhnnss")
end function

sub doprop (obj,item)
' recherche du propriétaire à faire
exit sub
For i = 0 to 13
 msgbox  obj.GetDetailsOf (item, i)
Next
end sub

function dt14 (obj)
  dt14m=  fmtdate(obj.datelastmodified )  
  dt14c=  fmtdate(obj.datecreated)  
  dt14a=  fmtdate(obj.datelastaccessed) 
  dt14= """" & dt14c & " " & dt14m & " " & dt14a & """"
end function

sub dodir(rac)
set o=fs.getfolder(rac)
prem=true
if (o.attributes and 1024) = 1024  then
   ' si link juste écrire, ne pas suivre
   if len(rac)>3 then fo.writeline "<LNK> """  & fmtdate(o.DateCreated) & """ " & attribstr (o) & " """ & rac & """"
else 
Set colFiles = o.Files
on error resume next
For Each objFile In colFiles
if err.number>0 then 
   on error goto 0
   if len(rac)>3 then fo.writeline "<ERR> """ & fmtdate(o.DateCreated ) & """ " & attribstr (o) & " """ & rac & """"
   exit sub
end if
on error goto 0
if prem then if len(rac)>3 then fo.writeline "<REP> " & dt14(o) & " " &  attribstr (o) & " """ & rac & """"
prem=false
doprop o,objfile
domd5 objFile
Next

Set colFiles = o.SubFolders

For Each objFile In colFiles
 if right(rac,1)="\" then rac=left(rac,len(rac)-1) 
 nbfolders=nbfolders+1 
 dodir rac & "\" & objfile.name ' ,sizefofo
Next

end if ' 1024
end sub 'dodir

sub domd5 (myfile) ',sizefo)
h= GetFileCheckSum( myFile )

if h="" then 
  lib="<ACC>"
  nbdeny=nbdeny+1
else
  lib="<FIC>"
  nbfiles=nbfiles+1
end if
  dim o
  set o=fs.getfile(myfile)
  dim dt 
  sizefi=o.size
  sizefo=sizefo+sizefi
  fo.writeline lib & " """ & h & """ " & sep  & dt14(o) & " " & attribstr(o) & " """ & myfile & """ (" & sizefi & ")"
  lontot=lontot+sizefi
end sub ' domd5

sub unattr(att,va,lettre,st)
  if (att and va) = va then 
      st=st & lettre
      att=att-va
   else
      st=st & "-"
   end if
end sub
 

function attribstr (objfi)
attr=objfi.Attributes
S=""
unattr attr,1,"R",S
unattr attr,2,"H",S
unattr attr,4,"S",S
unattr attr,8,"V",S
unattr attr,16,"D",S
unattr attr,32,"A",S
unattr attr,64,"L",S
unattr attr,128,"C",S
unattr attr,1024,"J",S
unattr attr,2048,"Z",S
if attr<>0 then S=S & " [" & a & "]"
attribstr="""" & S & """"
end function

Function Format(vExpression, sFormat) 
 
        set fmt = CreateObject("MSSTDFMT.StdDataFormat") 
        fmt.Format = sFormat 
 
        set rs = CreateObject("ADODB.Recordset") 
        rs.Fields.Append "fldExpression", 12 ' adVariant 
 
        rs.Open 
        rs.AddNew 
 
        set rs("fldExpression").DataFormat = fmt 
        rs("fldExpression").Value = vExpression 
 
        Format = rs("fldExpression").Value 
 
        rs.close: Set rs = Nothing: Set fmt = Nothing 
 
End Function 

Function GetFileCheckSum( myFile )
' This function uses X-standards.com's X-MD5 component to calculate
' the MD5 checksum of a file.
'
' Argument:
' myFile [string] the file name whose checksum is to be calculated
'
' Written by Rob van der Woude
' http://www.robvanderwoude.com
'
' The X-MD5 component is available at:
' http://www.xstandard.com/page.asp?p=C8AACBA3-702F-4BF0-894A-B6679AA949E6
' For more information on available functionality read:
' http://www.xstandard.com/printer-friendly.asp?id=44AFBB03-EDC1-49FE-94CC-333AE728331E
    Dim objMD5
    Set objMD5 = CreateObject( "XStandard.MD5" )
    GetFileCheckSum = objMD5.GetCheckSumFromFile( myFile )
    Set objMD5 = Nothing
End Function


perfs (c: de DellE520) : environ 100000 fichiers à l'heure; à ce soir!