Netoyeur + bench disque dur

Description

Voila un petit code sans pretention qui plairas au fous de bench disque et fous de securité.
en fait ce code permet d'ecrire d'effacer tout trace des fichier effacer auparavant.
oui car lorsque l'on suprime un fichier dans windows, celui n'est pas totalement effacer du disque dur. ceci effaceras donc toute trace des fichier suprimmé.
En prime dans l'interface pour faire patienté, j'ai ajouter un petit moniteur qui affiche les debits disque en ecriture. Donc grace a ca on peut connaitre la vitesse en ecriture des disque dure de sont ordinateur.
il y a 2 debit afficher, le temp reel et la moyenne.

Source / Exemple :


'////////////////////////////////////////////////////////////////////////////
'// $File       : 		Netoyeur.vbs
'// $Author     : 	Bernard Denis <denis@sim-land.com>
'// $WebSite :		http://microtips.dyndns.org
'// $Description: 	Script d'eciture a null de l'espace libre des disque dure pour effacer 
'//					les traces de fichier supprimer
'//
'////////////////////////////////////////////////////////////////////////////
'// $Release    : 	1.0
'// $Date       : 	9 novembre , 2004
'//
'////////////////////////////////////////////////////////////////////////////
'// $Release    :	 1.1
'// $Comments   : 	Ajout de fonction de bench des debits en ecriture du disque.
'// $Date       : 	17 janvier , 2005
'//
'////////////////////////////////////////////////////////////////////////////

Set oBrowserActi = CreateObject("InternetExplorer.Application") ' creation instance de IE 
iniActivity(oBrowserActi) 	' ouverture de IE ( pour affichage de l'activité)
'declaration des constante pour la gestion des fichier
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0

Dim fso, d, dc, s, n
Set fso = CreateObject("Scripting.FileSystemObject") ' creation de l'instance de la gestion du system de fichier
Set dc = fso.Drives	'recuperation des disque de l'ordinateur 
For Each d in dc ' pour chaque disque 
   If d.DriveType = 2 Then ' si disque et un disque dur
		s =  d.DriveLetter ' recuperer la letre de lecteur
		sizefree = ShowFreeSpace(s) ' calculer l'espace disque disponible avec en parametre la letre de lecteur 
		cleandisk sizefree,s ' lancement du netoyage du disque en question avec pour paramtere, la letre de lecteur et la taille libre
   End If
Next
closeActivity (oBrowserActi)'fin du script 

'fonction de calcul de l'espace libre disponible sur le disque demander
Function ShowFreeSpace(ByVal letter)
	Dim fso, d, s,drvPath	
	Set fso = CreateObject("Scripting.FileSystemObject") ' creation de l'instance de la gestion du system de fichier
	drvPath = letter & ":\ " ' definition du lecteur 
	Set d = fso.GetDrive(fso.GetDriveName(drvPath)) ' capture du lecteur 
	ShowFreeSpace = FormatNumber(d.FreeSpace, 0) 'renvois l'espace dispo en octet
End Function

Function cleandisk(byval sizefree, byval driveletre) 
	AffActivity "Demarrage disque " & driveletre ,""
	randomize 'initialisation d'une valeur aleatoire
	If  (fso.FileExists(driveletre & ":\cleanfile.existepas"))Then 'test si le fichier temporaire existe et si oui le suprime 
		Set f_rep = fso.getfile(driveletre & ":\cleanfile.existepas")
		f_rep.delete(true)
		wscript.sleep 200
		Set f_rep = nothing
	End If
	fso.CreateTextFile (driveletre & ":\cleanfile.existepas") ' creation du fichier temporaire 
	Set f_rep = fso.getfile(driveletre & ":\cleanfile.existepas")
	Set ts_rep = f_rep.OpenAsTextStream(ForWriting, TristateUseDefault) 'ouverture du fichier temporaire 
	On Error Resume Next
	sizefree = replace(sizefree," " ,"", 1 ,-1) ' remplace les espace dans la taille de l'espace libre par des vide ( car certain poste definisse cette valeur avec des espace)
	sizefree = Int(sizefree ) ' redefinition de l'espace libre en tant de valeur entiere
	ligne = Chr(255 * rnd) ' definition du premier octet avec une valeur aleatoire compris dans la table ASCII de 255 caractere
	boucleleng = 65536 ' definition de la taille des mot ecrit
	wshshell = CreateObject("wscript.shell") 
	pourcent =  sizefree / 100 'definition du rapport de poucentage en fonction de l'espace libre 
	For i=0 To boucleleng 'creation du mot en fonction de la taille definie avant.
		ligne = ligne & Chr(255 * rnd) ' mot ecrit avec des valeur aleatoire ( comme le premiere octet ) 
	Next
	depart = timer ' point de depart qui permet de calculer le temp d'activité
	laptime = timer ' point de controle pour calculer le debit du disque
	For i = 1 To sizefree step boucleleng ' boucle d'ecriture du fichier temporaire
		ts_rep.write(ligne) 'ecriture des mots dans le fichier temporaire
		If (j * boucleleng )  > pourcent Then ' si on a ecrit 1 pourcent du fichier on va generer un affichage de l'activité ecouler 
			fait = i  / 1024 / 1024 ' calcul du nombre de mo ecrit
			tempecouler = timer - depart ' calcul du temp ecouler depuis le depart 
			instant = timer - laptime ' calcul du temp ecouler depuis le dernier pourcent realiser
			debit = formatnumber(fait / tempecouler ,2) 'calcul de la moyenne des debits disque
			debitreel = formatnumber( ((((j * boucleleng) /1024) /1024) / instant),2) ' calcul du debit en temp reel
			activity = formatnumber(i/sizefree * 100,0) & "%" ' calcul du pourcentage actuel 
			AffActivity "disque " & driveletre & " <br>avancement :",activity & "<br>debit moyen = "& debit & " Mo/s<br>debit actuel = "&debitreel &" Mo/s" ' affichage du poucentage, debit moyent et debit temp reel 
			j = 0
			laptime = timer'  re definition du point de controle
		End If
		j =j +1
	Next
	'ecriture du debit moyen realiser
	fait = i  / 1024 / 1024 
	tempecouler = timer - depart
	debit = formatnumber(fait / tempecouler ,2) 
	AffActivity "disque :"& driveletre & " Terminé " , "<br> debit moyen = " &debit  
	
	ts_rep.close ' fermeture du fichier temporaire 
	wscript.sleep 2000 ' pause de 2 seconde pour laisser le temp au system de bien fermer le fichier 
	f_rep.delete(true) ' supression du fichier temporaire

End Function

'fonction qui va definire l'interface d'affichage d'internet explorer.
Function iniActivity (byref oBrowserActi)
	With oBrowserActi
		.Width = 250
		.Height = 120
		.Left = 80
		.Top = 0
		.Resizable = false
		.StatusBar = false
		.MenuBar = false
		.AddressBar = false
		.ToolBar = false
		.Visible = true
		.Navigate "about:blank"
		wscript.sleep 500
	End With
	oBrowserActi.Document.WriteLn "<HTML><HEAD><TITLE>netoyage en cour</TITLE></HEAD><BODY bgcolor=#ffffD0>" 'ecriture de la couleur de fond de la fenetre de log 
End Function

' fonction qui va afficher les message en faisant un refresh a chaque passage 
Function AffActivity(byVal STitle, byVal sMsg) 
	oBrowserActi.refresh
	oBrowserActi.Document.WriteLn "<HTML><HEAD><TITLE>netoyage en cour</TITLE></HEAD><BODY bgcolor=#ffffD0>"
	oBrowserActi.Document.WriteLn "<FONT size=2 FACE=""Arial"" color=black>" & sTitle & sMsg
End Function

'fonction qui va fermer internet explorer
Function closeActivity(byref oBrowsers)
	obrowsers.quit
End Function

Conclusion :


ce script n'ayant etait tester que sur de la NTFS, il est possible qu'il ne fonctionne pas corectement sur de la FAT car il genere un fichier unique de la taille libre sur la partition.
une prochaine version est deja prevue avec une progress bar a la place du poucentage. et un ajout d'un graphique final pour recapituler l'espace libre des disques et les moyenne de debit de disque par contre j'ai pas de delai sur quand je pourait faire cette addon

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.