1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| Option Explicit
Const outFile = "file.html"
Dim oFilesys,oFiletxt,Path,Ws,SourceImgFolder,StartTime,MsgTitre,DurationTime,objFolder,CheminDossier,Dossier,Copyright
Dim SizeKo,SizeMo,SizeGo,objShell,fso,size
Copyright = "© Hackoo © 2013"
MsgTitre = "Générer une arborescence d'un dossier en HTML "&Copyright&""
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "Veuillez choisir un dossier "&Copyright, 1, "c:\Programs")
If objFolder Is Nothing Then
WScript.Quit
End If
CheminDossier = objFolder.self.path
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(CheminDossier)
If Dossier.Size = 0 Then
MsgBox "Le Dossier " & CheminDossier & " est vide",16,"Dossier Vide"
WScript.Quit
End if
SizeKo = Round(FormatNumber(Dossier.Size)/(1024),1) & " Ko" 'Taille en Ko avec 1 chiffre après la Virgule
SizeMo = Round(FormatNumber(Dossier.Size)/(1048576),1) & " Mo" 'Taille en Mo avec 1 chiffre après la Virgule
SizeGo = Round(FormatNumber(Dossier.Size)/(1073741824),1) & " Go" 'Taille en Go avec 1 chiffre après la Virgule
If Dossier.size < 1024 Then
Size = Dossier.size & " Octets"
elseif Dossier.size < 1048576 Then
Size = SizeKo
elseif Dossier.size < 1073741824 Then
Size = SizeMo
else
Size = SizeGo
end If
Set oFilesys = CreateObject("Scripting.FileSystemObject")
Set oFiletxt = oFilesys.CreateTextFile(outFile,True)
Set Ws = CreateObject("Wscript.Shell")
oFiletxt.WriteLine("<html><body text=white bgcolor=#1234568><style type='text/css'>"&_
"a:link {color: #F19105;}"&_
"a:visited {color: #F19105;}"&_
"a:active {color: #F19105;}"&_
"a:hover {color: #FF9900;background-color: rgb(255, 255, 255);}"&_
"</style>")
SourceImgFolder = "http://upload.wikimedia.org/wikipedia/commons/a/a4/Icons-mini-folder.gif"
StartTime = Timer 'Début du Compteur Timer
oFiletxt.WriteLine("+ <img src="&SourceImgFolder&"> <a target=_Blank href='file:///" & CheminDossier & "'>" & CheminDossier & "</a><font color=""Yellow""> ["&Size&"]</font><br><br>")
oFiletxt.WriteLine(List(CheminDossier))
oFiletxt.WriteLine("</body></hmtl>")
oFiletxt.Close
DurationTime = FormatNumber(Timer - StartTime, 0) & " seconds." 'La durée de l'exécution du script
Ws.Popup "La génération au format HTML est terminée dans "& DurationTime & " !","5",MsgTitre,64
Ws.Run outFile
Function List(directory)
Dim fsoFolder,Folder,subfolders,objFile,objFolder,subfiles,SourceImgFile,NBFiles,Size,SizeKo,SizeMo,SizeGo,SourceImgFolder
On Error Resume next
Set fsoFolder = CreateObject("Scripting.FileSystemObject")
Set folder = fsoFolder.GetFolder(directory)
Set subfolders = folder.SubFolders
Set subfiles = folder.Files
SourceImgFolder = "http://upload.wikimedia.org/wikipedia/commons/a/a4/Icons-mini-folder.gif"
SourceImgFile = "http://upload.wikimedia.org/wikipedia/en/d/d8/VBSccript_file_format_icon.png"
NBFiles = 0
For each objFile in subfiles
NBFiles = NBFiles + 1
SizeKo = Round(FormatNumber(objFile.Size)/(1024),1) & " Ko" 'Taille en Ko avec 1 chiffre après la Virgule
SizeMo = Round(FormatNumber(objFile.Size)/(1048576),1) & " Mo" 'Taille en Mo avec 1 chiffre après la Virgule
SizeGo = Round(FormatNumber(objFile.Size)/(1073741824),1) & " Go" 'Taille en Go avec 1 chiffre après la Virgule
If objFile.size < 1024 Then
Size = objFile.size & " Octets"
elseif objFile.size < 1048576 Then
Size = SizeKo
elseif objFile.size < 1073741824 Then
Size = SizeMo
else
Size = SizeGo
end If
oFiletxt.WriteLine("<dd>"& NBFiles &" |-<img src="&SourceImgFile&" height=""18"" width=""20""> <a target=_Blank href='file:///" & objFile.Path & "'>" & objFile.Name & "</a> ("&Size&")<br/>")
Next
For each objFolder in subfolders
SizeKo = Round(FormatNumber(objFolder.Size)/(1024),1) & " Ko" 'Taille en Ko avec 1 chiffre après la Virgule
SizeMo = Round(FormatNumber(objFolder.Size)/(1048576),1) & " Mo" 'Taille en Mo avec 1 chiffre après la Virgule
SizeGo = Round(FormatNumber(objFolder.Size)/(1073741824),1) & " Go" 'Taille en Go avec 1 chiffre après la Virgule
If objFolder.size < 1024 Then
Size = objFolder.size & " Octets"
elseif objFolder.size < 1048576 Then
Size = SizeKo
elseif objFolder.size < 1073741824 Then
Size = SizeMo
else
Size = SizeGo
end If
oFiletxt.WriteLine("<br><DL>+ <img src="&SourceImgFolder&"> <a target=_Blank href='file:///" & objFolder.Path & "'>" & objFolder.Path & "</a> <font color=""Yellow"">["&Size&"]</font><br><br/>")
List(objFolder) 'Appel récusive de la fonction List
Next
End Function |
Partager