Page 1 sur 2
Sauvegarde de son travail
Publié : sam. 01/janv./2005 14:55
par Apprenti
Moi qui débute je recens un grand besoin de sauvegarde... !!!
Vu la taille des disques durs d'aujourd'hui et la petitesse des code PB, je duplique carrement le dossier des codes au lancement de PureBasic
Voilà le batch que j'utilise.
Il doit être facile pour vous de faire çà en PB
pour que çà gère toutes les versions de windows et Linux
et de pouvoir rentrer en paramètre :
- l'emplacement de PureBasic.exe
- l'emplacement des données à sauvegarder
- et le dossier de sauvegarde (pourquoi pas)
- le nombre de sauvegarde incrémenté
@echo off
cls
echo.
echo ..........................................
echo Sauvegarde des developpements en PureBasic
echo ..........................................
echo.
echo Version 1.1
echo.
echo Suppression du plus ancien dossier
rem - sous XP, WinNT, Win2000
if exist Svg30\*.* rd /q /s Svg30
rem - sous Win9x
rem if exist Svg30\*.* deltree /y Svg30
echo.
rem Aller dans le dossier de développement
cd Caisse
echo Incrementation des 30 dernieres sauvegardes
if exist Svg29\*.* ren Svg29 Svg30
if exist Svg28\*.* ren Svg28 Svg29
if exist Svg27\*.* ren Svg27 Svg28
if exist Svg26\*.* ren Svg26 Svg27
if exist Svg25\*.* ren Svg25 Svg26
if exist Svg24\*.* ren Svg24 Svg25
if exist Svg23\*.* ren Svg23 Svg24
if exist Svg22\*.* ren Svg22 Svg23
if exist Svg21\*.* ren Svg21 Svg22
if exist Svg20\*.* ren Svg20 Svg21
if exist Svg19\*.* ren Svg19 Svg20
if exist Svg18\*.* ren Svg18 Svg19
if exist Svg17\*.* ren Svg17 Svg18
if exist Svg16\*.* ren Svg16 Svg17
if exist Svg15\*.* ren Svg15 Svg16
if exist Svg14\*.* ren Svg14 Svg15
if exist Svg13\*.* ren Svg13 Svg14
if exist Svg12\*.* ren Svg12 Svg13
if exist Svg11\*.* ren Svg11 Svg12
if exist Svg10\*.* ren Svg10 Svg11
if exist Svg09\*.* ren Svg09 Svg10
if exist Svg08\*.* ren Svg08 Svg09
if exist Svg07\*.* ren Svg07 Svg08
if exist Svg06\*.* ren Svg06 Svg07
if exist Svg05\*.* ren Svg05 Svg06
if exist Svg04\*.* ren Svg04 Svg05
if exist Svg03\*.* ren Svg03 Svg04
if exist Svg02\*.* ren Svg02 Svg03
if exist Svg01\*.* ren Svg01 Svg02
echo.
rem Création du dossier de sauvegarde
md Svg01
cd Svg01
echo.
echo Sauvegarde des programmes
echo - - - - - - - - - - - - -
echo.
copy ..\*.pb
rem Lancement de PureBasic
"C:\Program Files\PureBasic\PureBasic.exe"
exit
Publié : sam. 01/janv./2005 15:10
par Oliv
C'est bien

, mais tu programmes en PB, pourquoi ne pas l'avoir fait en PB ?
Publié : ven. 07/janv./2005 12:58
par Apprenti
Je demande que çà de ne plus faire de batch et de pouvoir utiliser PureBasic
Es-ce que c'est possible en version démo ?
PureBasic saura-t-il utiliser un Deltree our Rd suivant le windows ?
J'ai pas vu de commande pour renommer un dossier ?
Je prends ma licence si j'arrive à en faire quelque chose de PureBasic
bon week-end à vous
Publié : ven. 07/janv./2005 13:09
par Oliv
Apprenti a écrit :Je demande que çà de ne plus faire de batch et de pouvoir utiliser PureBasic
Es-ce que c'est possible en version démo ?
PureBasic saura-t-il utiliser un Deltree our Rd suivant le windows ?
J'ai pas vu de commande pour renommer un dossier ?
Je prends ma licence si j'arrive à en faire quelque chose de PureBasic
bon week-end à vous
J'avais oublié que l'on ne peux pas utiliser les API avec la version de démo
Publié : ven. 07/janv./2005 13:48
par hardy
Pour deltree, ça peut se programmer sans problème:
Regarde l'aide "filesystem" et "file". y'a tout ce qui faut.
On peut aussi lancer le deltree du DOS à partir d'un prog. PB en utilisant un "ShellExecute_" (API donc pas version démo).
Publié : ven. 07/janv./2005 14:19
par Le Soldat Inconnu
oui, ton batch est faisable avec la version Démo, on a toutes les fonctions nécessaires (j'avais fait un truc du type au début avec la démo pour sauver les param d'un programme)
Pour renommer un dossier, c'est RenameFile
copier un dossier, CopyDirectory
Supprimer un dossier, DeleteDirectory
Publié : sam. 08/janv./2005 0:57
par Apprenti
merci
j'avais trouvé RenameFile mais je pensais que ca renommait que les fichiers
Publié : sam. 08/janv./2005 14:50
par Apprenti
Voilà j'essaye de faire une copie du dossier dans un premier temps
rien ne marche....
Code : Tout sélectionner
; ******************************************
; Sauvegarde des developpements en PureBasic
; ******************************************
;
;- Constante Gadget
Enumeration
#Str_NbreSvg
EndEnumeration
;Stockage des infos en attendant un ecran parametre
;#Str_NbreSvg = 10
Procedure Dossier() ; Teste l'existance du dossier Racine de la sauvegarde
RepDestination$ = "C:\Double\Essai\"
TestDossier = ExamineDirectory(0, RepDestination$ , "")
If TestDossier= 0
MessageRequester("Info","Le dossier existe dejà",#PB_MessageRequester_Ok)
Else
If TestDossier= 1
CreateDirectory("C:\Double\")
MessageRequester("Info","Dossier crée",#PB_MessageRequester_Ok)
EndIf
EndIf
Delay(5000)
EndProcedure
Procedure Svg() ; Sauvegarde
RepSource$ = "c:\Essai\"
RepDestination$ = "c:\Double\Essai\"
Resultat = CopyDirectory(RepSource$, RepDestination$,"",#PB_FileSystem_Recursive)
If Resultat = 0
MessageRequester("Erreur","La sauvegarde a echouée",#PB_MessageRequester_Ok)
Else
If Resultat = 1
MessageRequester("Information","Sauvegarde réussie",#PB_MessageRequester_Ok)
EndIf
EndIf
Delay(5000)
EndProcedure
Procedure Sup() ; Suppression de la plus vieille sauvegarde
RepSup$ = RepDestination$+"10"
Resultat = ExamineDirectory(0, RepDestination$+"10", "")
If Resultat = 0
MessageRequester("Erreur","Dossier non trouvé",#PB_MessageRequester_Ok)
Else
If Resultat = 1
DeleteDirectory(RepDestination$,"*.*")
MessageRequester("Info","Dossier supprimé",#PB_MessageRequester_Ok)
EndIf
EndIf
Delay(5000)
EndProcedure
Publié : sam. 08/janv./2005 15:58
par Le Soldat Inconnu
pour savoir si un dossier existe, il faut utiliser FileSize
avant de faire le copydirectory, il faut bien s'assurer que le dossier source et le dossier de destination existe
Publié : dim. 09/janv./2005 11:24
par Apprenti
merci mais je m'en sors toujours pas, rien ne marche même pas un affichage
alors aue je mets un Delay
Code : Tout sélectionner
; ******************************************
; Sauvegarde des developpements en PureBasic
; ******************************************
;
;- Constante Gadget
Enumeration
#Str_NbreSvg
EndEnumeration
;Stockage des infos en attendant un ecran parametre
;#Str_NbreSvg = 10
Procedure Dossier() ; Teste l'existance du dossier Racine de la sauvegarde
RepDestination$ = "C:\Double\Essai\"
TestDossier = FileSize(RepDestination$)
If TestDossier = 1
MessageRequester("Info","Le dossier n'existe pas",#PB_MessageRequester_Ok)
Else
; If TestDossier = 2
CreateDirectory("C:\Double\")
MessageRequester("Info","Dossier crée",#PB_MessageRequester_Ok)
; EndIf
EndIf
Delay(5000)
EndProcedure
Goto Fin ; fin provisoire du programme en attendant que la 1ère procédure marche
Procedure Svg() ; Sauvegarde
RepSource$ = "c:\Essai\"
RepDestination$ = "c:\Double\Essai\"
Resultat = CopyDirectory(RepSource$, RepDestination$,"",#PB_FileSystem_Recursive)
If Resultat = 0
MessageRequester("Erreur","La sauvegarde a echouée",#PB_MessageRequester_Ok)
Else
If Resultat = 1
MessageRequester("Information","Sauvegarde réussie",#PB_MessageRequester_Ok)
EndIf
EndIf
Delay(5000)
EndProcedure
Fin:
Publié : dim. 09/janv./2005 11:50
par Anonyme2
Tu ne peux pas créer un dossier
"C:\Double\Essai" d'un coup, il faut le faire en deux fois et en autant de fois qu'il y a de sous-dossiers
(il faudrait un commande qui accepte la récursivité)
Sinon, c'est inutile de tester s'il existe avant de le créer, Createdirectory() ne va créer le dossier que s'il n'existe pas dons pas de problème, aucune donnée de perdue (d'ailleurs la fonction retourne 0 si elle échoue, avec le débug devant tu lances 2 fois la procedure et tu verras qu'au 2eme tour la fonction retrourne 0.
Ensuite pour ton prog tu supprime les debug
ta procedure revient à ça
Code : Tout sélectionner
Procedure Dossier()
Debug CreateDirectory("C:\Double\")
Debug CreateDirectory("C:\Double\Essai\")
EndProcedure
Publié : dim. 09/janv./2005 12:38
par Apprenti
cela marche toujours pas, aucun message visible
Code : Tout sélectionner
; ******************************************
; Sauvegarde des developpements en PureBasic
; ******************************************
;
;- Constante Gadget
Enumeration
#Str_NbreSvg
EndEnumeration
Procedure Dossier() ; Créer le dossier de sauvegarde
Debug CreateDirectory("C:\Double\")
Debug CreateDirectory("C:\Double\Essai\")
EndProcedure
Goto Fin ; fin provisoire du programme en attendant que la 1ère procédure marche
Procedure Svg() ; Sauvegarde
RepSource$ = "c:\Essai\"
RepDestination$ = "c:\Double\Essai\"
Resultat = CopyDirectory(RepSource$, RepDestination$,"",#PB_FileSystem_Recursive)
If Resultat = 0
MessageRequester("Erreur","La sauvegarde a echouée",#PB_MessageRequester_Ok)
Else
If Resultat = 1
MessageRequester("Information","Sauvegarde réussie",#PB_MessageRequester_Ok)
EndIf
EndIf
EndProcedure
Fin:
Delay(5000)
Publié : dim. 09/janv./2005 13:18
par Anonyme2
Essaye le code suivant qui fonctionne
Il faut peut-être appeler tes procedures pour les lancer.
Je n'ai fait plus qu'une procedure qui fonctionne.
Contrairement à ce que la doc dit , la sauvegarde récursive n'efface pas les fichiers présents dans le dossier (j'ai fait l'essai avec 2 répertoires différents )
CopyDirectory() ne fonctionne que si la chaine n'est pas terminée par /
(la doc ne le dit pas) alors que createdirectory() fonctionne avec le / ou sans le /
Code : Tout sélectionner
; ******************************************
; Sauvegarde des developpements en PureBasic
; ******************************************
;
;- Constante Gadget
Enumeration
#Str_NbreSvg
EndEnumeration
Procedure Svg() ; Sauvegarde
RepSource$ = "c:\Essai"
RepDestination$ = "c:\Double\Essai"
CreateDirectory("c:\Double\")
CreateDirectory(RepDestination$)
Resultat = CopyDirectory(RepSource$, RepDestination$,"*.*",#PB_FileSystem_Recursive)
If Resultat = 0
MessageRequester("Erreur","La sauvegarde a echouée",#PB_MessageRequester_Ok)
Else
If Resultat = 1
MessageRequester("Information","Sauvegarde réussie",#PB_MessageRequester_Ok)
EndIf
EndIf
EndProcedure
Svg() ; appel de la procedure
Publié : dim. 09/janv./2005 13:31
par Le Soldat Inconnu
Code : Tout sélectionner
CopyDirectory(RepSource$, RepDestination$,"*.*",#PB_FileSystem_Recursive)
manque le *.*
Publié : dim. 09/janv./2005 13:35
par Anonyme2
Le Soldat Inconnu a écrit :Code : Tout sélectionner
CopyDirectory(RepSource$, RepDestination$,"*.*",#PB_FileSystem_Recursive)
manque le *.*
Régis, Ca marche sans le *.*, voir la doc
Par défaut, une chaîne Masque$ vide permet la copie de tous les fichiers.