Voila j'avais prévu de laisser ce script pour mon anniversaire mais j'ai 2 mois de retard
Ce script est une gui pour utiliser un utilitaire nommer vhdtool celui-ci sert entre autre à créer ou étendre des fichiers VHD. Jai eu à installer un serveur Windows 2008 avec hyperV et je devais créer un disque dur virtuel de 900 giga et ça été très très long pour avoir ce fichier. Après quelques recherches sur le net j'ai trouvé une explication, lors de la création du fichier VHD le system écrit sur tout l'emplacement du fichier pour effacer les anciennes données résiduelles ( que pourrai faire apparaitre un logiciel de récupération de donnée ) mais sur un system neuf attendre quelques heures c'est pas top. J'ai trouvé l'utilitaire vhdtools qui créé un fichier VHD en quelques secondes. Sans être compliqué, les lignes de commande avec calcul de la taille en octet réclament une certaine maitrise, j'ai donc pensé à créer cette GUI cela peut intéresser d'autre tech comme moi.
ces fichiers VHD sont utilisés par d'autres programmes comme les virtualpc virtualbox etc..
Lien vers l'utilitaire http://archive.msdn.microsoft.com/vhdtool
lien vers une explication des fichiers VHD http://technet.microsoft.com/fr-fr/libr ... 10%29.aspx
Lors de la compilation du script j’intègre par fileinstall l'utilitaire,un fichier txt d'aide et un logo
J'ai mis ces lignes en commentaire libre à vous de les réintégrer avec vos paramétres
► Afficher le texte
Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.0
Author: JL56
Script Function:
exemple d'utilisattion d'une gui avec l'utilitaire vhdtools
#ce ----------------------------------------------------------------------------
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
$version="Version 20/10/2012"
Global $ligne
;~ FileInstall("c:\jl\vhdtool.txt", @ScriptDir & "\vhdtool.txt")
;~ FileInstall("c:\jl\vhdtool.exe", @ScriptDir & "\vhdtool.exe")
;~ FileInstall("c:\drvpi\instalpi\logopi.bmp", @ScriptDir & "\logopi.bmp")
#Region ### START Koda GUI section ### Form=C:\jl\autoit\vhdtool.kxf
Global $Form1_1 = GUICreate("Utilitaire pour fichier VHD", 628, 333, 206, 136)
GUISetBkColor(0x00FFFF)
Global $bt_valider = GUICtrlCreateButton("Valider", 16, 216, 211, 65, $WS_GROUP)
GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0x00FF00)
Global $inp_chemin = GUICtrlCreateInput("", 136, 24, 321, 21)
Global $bt_Dossier = GUICtrlCreateButton("Dossier", 8, 24, 115, 25, $WS_GROUP)
Global $bt_fichier = GUICtrlCreateButton("Fichier", 8, 24, 115, 25, $WS_GROUP)
Global $Group1 = GUICtrlCreateGroup("Action", 24, 88, 169, 105)
Global $radio_convert = GUICtrlCreateRadio("Convertir IMG>VHD", 40, 144, 113, 17)
Global $Radio_creer = GUICtrlCreateRadio("Créer un VHD", 40, 110, 113, 17)
Global $radio_etendre = GUICtrlCreateRadio("Etendre un VHD", 40, 128, 111, 17)
Global $Radio_reparer = GUICtrlCreateRadio("Réparer un instantané", 40, 160, 137, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $Group2 = GUICtrlCreateGroup("Taille du fichier final ", 440, 56, 153, 105)
Global $Radio_mega = GUICtrlCreateRadio("Mega", 456, 72, 73, 17)
Global $Radio_giga = GUICtrlCreateRadio("Giga", 456, 88, 81, 17)
Global $radio_tera = GUICtrlCreateRadio("Tera", 456, 104, 65, 17)
Global $inp_taille_final = GUICtrlCreateInput("", 451, 128, 129, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $Inp_nom_fichier = GUICtrlCreateInput("", 208, 112, 169, 21)
Global $Label2 = GUICtrlCreateLabel("Nom du fichier ( sans l'extension .vhd)", 208, 88, 185, 17)
;~ Global $Pic1 = GUICtrlCreatePic(@ScriptDir &"\logopi.bmp", 264, 168, 329, 137, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
Global $inp_fichier_instantane = GUICtrlCreateInput("", 136, 56, 321, 21)
Global $bt_fichier_instantane = GUICtrlCreateButton("Fichier instatané", 8, 56, 115, 25, $WS_GROUP)
Global $Inp_taille_fichier = GUICtrlCreateInput("", 208, 112, 169, 21)
Global $Label1 = GUICtrlCreateLabel("Taille du fichier d'origine", 208, 88, 117, 17)
Global $bt_aide = GUICtrlCreateButton("Aide", 16, 288, 75, 25, $WS_GROUP)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetBkColor(-1, 0xFFFF00)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $Labelv = GUICtrlCreateLabel($version, 500, 5, 200, 17)
GUICtrlSetState($Radio_creer, $GUI_CHECKED)
GUICtrlSetState($Radio_giga, $GUI_CHECKED)
GUICtrlSetState($bt_fichier, $GUI_HIDE)
GUICtrlSetState($bt_fichier_instantane, $GUI_HIDE)
GUICtrlSetState($inp_fichier_instantane, $GUI_HIDE)
GUICtrlSetState($Inp_taille_fichier, $GUI_HIDE)
GUICtrlSetState($Label1, $GUI_HIDE)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
case $bt_aide
run("notepad.exe "&@ScriptDir&"\vhdtool.txt")
Case $radio_convert
GUICtrlSetState($bt_fichier, $GUI_SHOW)
GUICtrlSetState($bt_Dossier, $GUI_HIDE)
GUICtrlSetState($inp_taille_final, $GUI_HIDE)
GUICtrlSetState($Inp_nom_fichier, $GUI_HIDE)
GUICtrlSetState($Label2, $GUI_HIDE)
GUICtrlSetState($bt_fichier_instantane, $GUI_HIDE)
GUICtrlSetState($inp_fichier_instantane, $GUI_HIDE)
GUICtrlSetState($Inp_taille_fichier, $GUI_HIDE)
GUICtrlSetState($Label1, $GUI_HIDE)
GUICtrlSetState($Group2, $GUI_HIDE)
GUICtrlSetState($Radio_mega, $GUI_HIDE)
GUICtrlSetState($Radio_giga, $GUI_HIDE)
GUICtrlSetState($radio_tera, $GUI_HIDE)
Case $radio_etendre
GUICtrlSetState($bt_fichier, $GUI_SHOW)
GUICtrlSetState($bt_Dossier, $GUI_HIDE)
GUICtrlSetState($inp_taille_final, $GUI_SHOW)
GUICtrlSetState($Inp_nom_fichier, $GUI_HIDE)
GUICtrlSetState($Label2, $GUI_HIDE)
GUICtrlSetState($bt_fichier_instantane, $GUI_HIDE)
GUICtrlSetState($inp_fichier_instantane, $GUI_HIDE)
GUICtrlSetState($Inp_taille_fichier, $GUI_SHOW)
GUICtrlSetState($Label1, $GUI_SHOW)
GUICtrlSetState($Group2, $GUI_SHOW)
GUICtrlSetState($Radio_mega, $GUI_SHOW)
GUICtrlSetState($Radio_giga, $GUI_SHOW)
GUICtrlSetState($radio_tera, $GUI_SHOW)
Case $Radio_creer
GUICtrlSetState($bt_fichier, $GUI_HIDE)
GUICtrlSetState($bt_Dossier, $GUI_SHOW)
GUICtrlSetState($inp_taille_final, $GUI_SHOW)
GUICtrlSetState($bt_fichier_instantane, $GUI_HIDE)
GUICtrlSetState($inp_fichier_instantane, $GUI_HIDE)
GUICtrlSetState($Inp_taille_fichier, $GUI_HIDE)
GUICtrlSetState($Label1, $GUI_HIDE)
GUICtrlSetState($Group2, $GUI_SHOW)
GUICtrlSetState($Radio_mega, $GUI_SHOW)
GUICtrlSetState($Radio_giga, $GUI_SHOW)
GUICtrlSetState($radio_tera, $GUI_SHOW)
GUICtrlSetState($Inp_nom_fichier, $GUI_SHOW)
GUICtrlSetState($Label2, $GUI_SHOW)
Case $Radio_reparer
GUICtrlSetState($bt_fichier, $GUI_SHOW)
GUICtrlSetState($bt_Dossier, $GUI_HIDE)
GUICtrlSetState($inp_taille_final, $GUI_HIDE)
GUICtrlSetState($bt_fichier_instantane, $GUI_SHOW)
GUICtrlSetState($inp_fichier_instantane, $GUI_SHOW)
GUICtrlSetState($Inp_taille_fichier, $GUI_HIDE)
GUICtrlSetState($Label1, $GUI_HIDE)
GUICtrlSetState($Group2, $GUI_HIDE)
GUICtrlSetState($Radio_mega, $GUI_HIDE)
GUICtrlSetState($Radio_giga, $GUI_HIDE)
GUICtrlSetState($radio_tera, $GUI_HIDE)
GUICtrlSetState($Inp_nom_fichier, $GUI_HIDE)
GUICtrlSetState($Label2, $GUI_HIDE)
Case $bt_fichier_instantane
$message = "Choisissez le fichier instantané"
$var = FileOpenDialog($message, "c:\", ".AVHD (*.avhd)", 1 + 4)
If @error Then
MsgBox(4096, "", "Aucun fichier de choisie")
Else
$var = StringReplace($var, "|", @CRLF)
$fichier_instantane = $var
GUICtrlSetData($inp_fichier_instantane, $var)
EndIf
Case $inp_taille_final
$taille_fichier = GUICtrlRead($inp_taille_final)
Case $Inp_nom_fichier
$nom_du_fichier = GUICtrlRead($Inp_nom_fichier)
Case $inp_chemin
$chemin = GUICtrlRead($inp_chemin)
If $chemin <> "" And _IsChecked($radio_etendre) Then
$taille_fichier_vhd = FileGetSize($chemin)
$taillevhd = $taille_fichier_vhd / 1024 / 1024
$type = " Mega"
If $taillevhd > 1024 Then
$taillevhd = $taille_fichier_vhd / 1024 / 1024 / 1024
$type = " Giga"
EndIf
$taillevhd = Int($taillevhd * 1000) / 1000
GUICtrlSetData($Inp_taille_fichier, $taillevhd & $type)
EndIf
Case $bt_valider
If _IsChecked($radio_convert) Then
$chemin = GUICtrlRead($inp_chemin)
If $chemin = "" Then
MsgBox(0, "Erreur", "Vous n'avez pas selectionné de fichier", 120)
Else
If StringLower(StringRight($chemin, 3)) = "img" Then
$ligne = 'vhdtool.exe /convert "' & $chemin & '"'
_command()
Exit
Else
MsgBox(0, "Erreur", "Le fichier sélectionné n'est pas un fichier (raw) IMG", 120)
Exit
EndIf
EndIf
EndIf
If _IsChecked($Radio_reparer) Then
$chemin = GUICtrlRead($inp_chemin)
If $chemin = "" Then
MsgBox(0, "Erreur", "Vous n'avez pas selectionné de fichier", 120)
Else
$fichier_instantane = GUICtrlRead($inp_fichier_instantane)
If $bt_fichier_instantane = "" Then
MsgBox(0, "Erreur", "Vous n'avez pas selectionné de fichier instantané", 120)
Exit
Else
$ligne = 'vhdtool.exe /repair "' & $chemin & '" "' & $fichier_instantane & '"'
_command()
Exit
EndIf
EndIf
EndIf
$taille = 0
$taille_fichier = GUICtrlRead($inp_taille_final)
If $taille_fichier = 0 Then
MsgBox(0, "Erreur", "Vous n'avez pas définie de taille du fichier", 120)
Exit
EndIf
If _IsChecked($Radio_mega) Then $taille = $taille_fichier * 1024 * 1024
If _IsChecked($Radio_giga) Then $taille = $taille_fichier * 1024 * 1024 * 1024
If _IsChecked($radio_tera) Then $taille = $taille_fichier * 1024 * 1024 * 1024 * 1024
If $taille > 2* 1024 * 1024 * 1024 * 1024 Then
MsgBox(0, "Erreur", "La taille maximal d'un VHD est 2 Teras", 120)
Exit
EndIf
If _IsChecked($radio_etendre) Then
$chemin = GUICtrlRead($inp_chemin)
If $chemin = "" or $taille_fichier_vhd>$taille Then
MsgBox(0, "Erreur", "Vous n'avez pas selectionné de fichier ou la taille du fichier final est inférieur au fichier d'origine", 120)
Else
If StringLower(StringRight($chemin, 3)) = "vhd" Then
$ligne = 'vhdtool.exe /extend "' & $chemin & '" ' & $taille
_command()
Exit
Else
MsgBox(0, "Erreur", "Le fichier sélectionné n'est pas un fichier VHD", 120)
Exit
EndIf
EndIf
EndIf
If _IsChecked($Radio_creer) Then
$chemin = GUICtrlRead($inp_chemin)
$nom_du_fichier = GUICtrlRead($Inp_nom_fichier)
If $chemin = "" Or $nom_du_fichier = "" Then
MsgBox(0, "Erreur", "Vous n'avez pas selectionné de dossier et/ou saisie de nom de fichier", 120)
Else
If StringRight($chemin, 1) = "\" Then
$anti = ""
Else
$anti = "\"
EndIf
$ligne = 'vhdtool.exe /create "' & $chemin & $anti & $nom_du_fichier & '.vhd" ' & $taille
_command()
Exit
EndIf
EndIf
Case $bt_Dossier
$message = "Choisissez le dossier"
$var = FileSelectFolder($message, "", "dossier du fichier vhd ", 1)
If @error Then
MsgBox(4096, "", "pas de dossier ", 180)
Else
$var = StringReplace($var, "|", @CRLF)
;~ ;MsgBox(4096,"","le dossier est " & $var)
$chemin = $var
GUICtrlSetData($inp_chemin, $var)
EndIf
Case $bt_fichier
$message = "Choisissez le fichier"
$var = FileOpenDialog($message, "c:\", "VHD ou IMG (*.vhd;*.img)", 1 + 4)
If @error Then
MsgBox(4096, "", "Aucun fichier de choisie")
Else
$var = StringReplace($var, "|", @CRLF)
$chemin = $var
GUICtrlSetData($inp_chemin, $var)
If $chemin <> "" And _IsChecked($radio_etendre) Then
$taille_fichier_vhd = FileGetSize($chemin)
$taillevhd = $taille_fichier_vhd / 1024 / 1024
$type = " Mega"
If $taillevhd >= 1000 Then
$taillevhd = $taille_fichier_vhd / 1024 / 1024 / 1024
$type = " Giga"
EndIf
$taillevhd = Int($taillevhd * 100) / 100
GUICtrlSetData($Inp_taille_fichier, $taillevhd & $type)
EndIf
EndIf
EndSwitch
WEnd
Func _command()
ConsoleWrite(@ScriptDir&"\"&$ligne&@CRLF)
$foo = Run(@ScriptDir&"\"&$ligne, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Sleep(100)
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
MsgBox(0, "Résultat de la commande VDTOOLS", $line, 180)
WEnd
While 1
$line = StderrRead($foo)
If @error Then ExitLoop
If $line <> "" Then
SplashOff()
MsgBox(0, "Erreur de vdtools", $line, 180)
EndIf
WEnd
EndFunc ;==>_command
Func _IsChecked($control)
Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED
EndFunc ;==>_IsChecked
A+ JL56
- vhdtool.zip
- (33.48 Kio) Téléchargé 425 fois