ça marche très bien. J'ai donc fait un petit générateur de fichiers BATCH (fichier .bat) permettant de lancer une copie incrémentielle basée sur la date de création des fichiers. Bien moins long que de réinventer la roue en PB.
Note : Activez le support unicode dans les options de compilation.
Utilisation :
1 - Choisissez le dossier dont vous voulez copier le contenu.
2 - Choisissez le dossier où vous souhaitez copier ce contenu.
3 - Cliquez sur générer.
Les petits ajouts en plus de l'interface
- Nom du fichier .bat de sortie éditable
- Possibilité d'ajouter la date et l'heure au nom de fichier (pour le bat)
- Le logiciel vous propose aussi d'ouvrir le planificateur de tâches.
Voilà si ça peut vous servir.
EnJoYeZ
Code : Tout sélectionner
; Batch Backup generator by Ar-S // 11-10-2014 // PB 5.30 x86
;v2
Declare OpenWindow_LDVM()
Declare.s Resume()
Declare ChoosePATH(gadget)
Enumeration
#LDVM
EndEnumeration
;}
;{ Gadgets
Enumeration
#TXT_SRC
#TXT_NOM
#TXT_DEST
#EX_SRC
#E_SRC
#EX_DEST
#E_DEST
#INFO
#NOMFICHIER
#BT_MODIF
#CheckDate
#BT_GO
EndEnumeration
Global.b ChooseDest, DateADD, EtatModif
Global CheminInitial$, source$, destination$, nomfichier$, Resume$, extension$, FullName$
ChooseDest = 0
CheminInitial$ = "C:\"
source$ = CheminInitial$
destination$ = source$
nomfichier$ = "BatchCopy"
extension$ = ".bat"
FullName$ = nomfichier$ + extension$
Procedure OpenWindow_LDVM()
If OpenWindow(#LDVM, 444, 208, 637, 490, "Xcopy Batch Backup Generator - LDV MULTIMEDIA - v2.0", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
TextGadget(#TXT_SRC, 5, 5, 310, 20, "Placez vous dans le dossier à sauvegarder", #SS_CENTERIMAGE)
TextGadget(#TXT_DEST, 320, 5, 310, 20, "Plassez vous dans le dossier de sauvegarde", #SS_CENTERIMAGE)
TextGadget(#TXT_NOM, 3, 440, 98, 20, "Nom du fichier :", #SS_CENTERIMAGE)
ExplorerComboGadget(#EX_SRC, 1, 30, 315, 25, CheminInitial$, #PB_Explorer_DrivesOnly)
ExplorerListGadget(#E_SRC, 1, 55, 315, 285, CheminInitial$, #PB_Explorer_AutoSort|#PB_Explorer_FullRowSelect|#PB_Explorer_GridLines|#PB_Explorer_NoDriveRequester|#PB_Explorer_NoFiles)
ExplorerComboGadget(#EX_DEST, 320, 30, 315, 25, CheminInitial$, #PB_Explorer_DrivesOnly)
ExplorerListGadget(#E_DEST, 320, 55, 315, 285, CheminInitial$, #PB_Explorer_AutoSort|#PB_Explorer_FullRowSelect|#PB_Explorer_GridLines|#PB_Explorer_NoDriveRequester|#PB_Explorer_NoFiles)
EditorGadget(#INFO, 1, 343, 635, 95, #PB_Editor_ReadOnly)
StringGadget(#NOMFICHIER, 105, 440, 130, 20, nomfichier$)
DisableGadget(#NOMFICHIER,1)
ButtonGadget(#BT_MODIF, 240, 440, 75, 20, "Modifier")
CheckBoxGadget(#CheckDate, 326, 440, 305, 20, "Ajouter la date et l'heure ?")
ButtonGadget(#BT_GO, 1, 463, 636, 25, "Générer le fichier : ", #BS_FLAT)
Resume()
EndIf
EndProcedure
Procedure WriteBat(Fichierbat.s)
Shared BAT_Path_File$
BAT_Path_File$ = GetCurrentDirectory() + Fichierbat.s
If CreateFile(0, BAT_Path_File$)
WriteStringN(0, "@echo off",#PB_UTF8)
WriteStringN(0, "echo..",#PB_UTF8)
WriteStringN(0, "echo LDV MULTIMEDIA Batch Copy System",#PB_UTF8)
WriteStringN(0, "echo Copie incrementielle en cours...",#PB_UTF8)
WriteStringN(0, "xcopy "+Chr(34) + source$ + Chr(34) + " " +Chr(34) + destination$ + Chr(34) + " /E /H /R /Y /I /D",#PB_UTF8)
WriteStringN(0, "echo Copie terminee presser une touche pour quitter",#PB_UTF8)
WriteStringN(0, "pause",#PB_UTF8)
WriteStringN(0, "exit",#PB_UTF8)
CloseFile(0)
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
EndProcedure
Procedure ChoosePATH(gadget)
Debug gadget
If gadget < #INFO And gadget > #TXT_DEST
PathGadget$ = GetGadgetText(Gadget)
Select Gadget
; Les Volumes disques
Case #EX_SRC
source$ = GetGadgetText(Gadget)
source$ = Left(source$,3)
Debug source$
SetGadgetText(#E_SRC, source$)
LenS = Len(source$)
source$=Left(source$, LenS-1)
Case #EX_DEST
destination$ = GetGadgetText(Gadget)
SetGadgetText(#E_DEST, destination$)
LenD = Len(destination$)
Destination$=Left(destination$, LenD-1)
; Les explorers
Case #E_SRC
source$ = GetGadgetText(Gadget)
SetGadgetText(#EX_SRC, source$)
LenS = Len(source$)
source$=Left(source$, LenS-1)
Case #E_DEST
destination$ = GetGadgetText(Gadget)
SetGadgetText(#EX_DEST, destination$)
LenD = Len(destination$)
Destination$=Left(destination$, LenD-1)
EndSelect
SetGadgetText(#INFO, Resume() )
EndIf
EndProcedure
Procedure.s DateBackup()
Protected Date$,Time$
Date$ = FormatDate("%yyyy-%mm-%dd-", Date())
Time$ = FormatDate("%hhh%iim%sss", Date())
ProcedureReturn Date$+Time$
EndProcedure
Procedure.s Resume()
Resume$ = "Vous allez créer un fichier Batch permétant la copie du contenu de : "+ Chr(10) + source$ + Chr(10) + "dans le dossier : " + destination$ + Chr(10) + "Sous le nom " + FullName$ + Chr(10) + "Vous pouvez cliquer sur GENERER"
ProcedureReturn Resume$
EndProcedure
OpenWindow_LDVM()
Repeat
Select WaitWindowEvent(20)
Case #PB_Event_Gadget
Select EventGadget()
Case #EX_SRC
ChoosePATH(#EX_SRC)
Case #EX_DEST
ChoosePATH(#EX_DEST)
Case #E_SRC
ChoosePATH(#E_SRC)
Case #E_DEST
ChoosePATH(#E_DEST)
Case #BT_MODIF
If EtatModif = 0
DisableGadget(#NOMFICHIER,0)
DisableGadget(#BT_GO,1)
DisableGadget(#CheckDate,1)
SetGadgetText(#BT_MODIF,"Valider")
EtatModif = 1
SetActiveGadget(#NOMFICHIER)
ElseIf EtatModif = 1
DisableGadget(#NOMFICHIER,1)
DisableGadget(#BT_GO,0)
DisableGadget(#CheckDate,0)
SetGadgetText(#BT_MODIF,"Modifier")
EtatModif = 0
nomfichier$ = GetGadgetText(#NOMFICHIER)
FullName$ = nomfichier$+extension$
EndIf
SetGadgetText(#INFO, Resume() )
Case #CheckDate
If GetGadgetState(#CheckDate)<> 0
DateADD = #True
extension$ = "_"+DateBackup()+".bat"
Else
DateADD = #False
extension$ = ".bat"
EndIf
FullName$ = nomfichier$ + extension$
SetGadgetText(#INFO, Resume() )
Case #BT_GO
If source$ <> destination$
If WriteBat(FullName$) = 1
Q = MessageRequester("OK","Vous avez créer un BATCH qui va copier le contenue de : "+Chr(10)+source$+Chr(10)+"vers"+Chr(10)+destination$+Chr(10)+Chr(10)+"Souhaitez vous accéder au fichier BATCH ?",0|#PB_MessageRequester_YesNo|#MB_ICONQUESTION)
If Q = #PB_MessageRequester_Yes
Path$ = GetCurrentDirectory()
Q2 = MessageRequester("Planifier une sauvegarde ?","Voulez vous aussi lancer le planificateur de tâche de windows ?",0|#PB_MessageRequester_YesNo|#MB_ICONQUESTION)
If Q2 = #PB_MessageRequester_Yes
RunProgram("Taskschd.msc","","",0)
EndIf
RunProgram(path$,"","",0)
EndIf
EndIf
Else
MessageRequester("Erreur","Attention, la source et la destination sont identiques !",#MB_ICONEXCLAMATION)
EndIf
EndSelect
; ////////////////////////
Case #PB_Event_CloseWindow
Select EventWindow()
Case #LDVM
CloseWindow(#LDVM)
Break
EndSelect
EndSelect
ForEver
End