Se connecter / S'enregistrer
Votre question

Script pour copier, effacer fichiers dans un dossier avec date VBS

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
3 Décembre 2010 22:07:47

Bonjour

J'ai 2 fichiers Access format .mdb qui sont modifies au quotidien par un logiciel d'analyse d'images.
A chaque image ajoutee, une entree est cree dans ces fichiers .mdb

Donc j'aimerais avoir un systeme pour sauver ces fichiers pour avoir un cordon de securite en cas de corruption des .mdb.
Pour ca, j'ai cherche a aire un petit script que je pourrais ensuite lancer avec le planificateur de taches de Windows.

Je suis parti d'un fichier VBS deja fait que voici:
  1. Dim FichierSource, FichierSource2, FichierDest, DateFichier, objFSO, fso, f, objFSO2
  2. 'Variables du fichier a copier et du dossier de destination
  3. FichierSource = "D:\ASI_DataBase\CDMCytogeneticsProject2000.mdb"
  4. DateFichier = FormatDate(Date(), "-" )
  5.  
  6. Set fso = CreateObject("Scripting.FileSystemObject")
  7. Set f = fso.CreateFolder("c:\Save")
  8. Set objFSO = CreateObject("Scripting.FileSystemObject" )
  9. Set objFSO2 = CreateObject("Scripting.FileSystemObject" )
  10.  
  11. CreateFolderDemo = f.Path & "\"
  12. objFSO.Copyfile FichierSource, CreateFolderDemo & DateFichier & " - CDMCytogeneticsProject2000" & ".mdb"
  13.  
  14. objFSO2.Copyfile FichierSource, CreateFolderDemo & DateFichier & " - DBCytogeneticsProjectClient2000Protected" & ".mdb"
  15.  
  16.  
  17. Function FormatDate(ValDate, Caractere)
  18. Dim MoisDate, JourDate
  19. ValDate = CDate(ValDate)
  20. Caractere = CStr(Caractere)
  21. MoisDate = Month(ValDate)
  22. JourDate = Day(ValDate)
  23. FormatDate = CStr(Year(ValDate)) & Caractere
  24. If MoisDate < 10 Then
  25. FormatDate = FormatDate & "0"
  26. End If
  27. FormatDate = FormatDate & CStr(MoisDate) & Caractere
  28. If JourDate < 10 Then
  29. FormatDate = FormatDate & "0"
  30. End If
  31. FormatDate = FormatDate & CStr(JourDate)
  32. End Function


Le probleme: la date est ajoutee au fichier .mdb et le dossier n'est pas modifie donc si je le lance 2 jours de suite, il y aura une erreur puisqu'il ne peut re-creer le dossier "Save".

Donc, comment puis je modifier le nom du fichier de destination pour inclure la date?
J'ai modifie mon code toute la soiree et j'arrive pas avoir un truc qui marche.

Aussi, j'aimerais ajouter une fonction de suppression automatique des anciennes sauvegardes ?
J'ai les fonctions necessaires expliquee ici mais je vois pas trop comment mettre ca en place.
Est ce que je peux faire creer un registre par le script avec la liste des dossiers present dans le dossier parent, registre qui servirait comme base pour la suppression des dossiers les plus anciens ?


Merci

Autres pages sur : script copier effacer fichiers dossier date vbs

4 Décembre 2010 00:56:32

Bon j'ai reussi la premiere partie pour avoir un dossier date:
  1. Dim FichierSource, FichierSource2, FichierDest, DateFichier, objFSO, fso, f, objFSO2, FileName
  2.  
  3. 'Variables du fichier a copier et du dossier de destination
  4. FichierSource = "D:\ASI_DataBase\Fichier1.mdb"
  5. FichierSource2 = "D:\ASI_DataBase\Fichier2.mdb"
  6. DateFichier = FormatDate(Date(), "-" )
  7. FileName = "C:\Sauvegarde du " & DateFichier & "\"
  8.  
  9. Set fso = CreateObject("Scripting.FileSystemObject")
  10. Set f = fso.CreateFolder(FileName)
  11. Set objFSO = CreateObject("Scripting.FileSystemObject" )
  12. Set objFSO2 = CreateObject("Scripting.FileSystemObject" )
  13.  
  14.  
  15.  
  16. CreateFolderDemo = FileName
  17. objFSO.Copyfile FichierSource, CreateFolderDemo & "fichier1" & ".mdb"
  18. objFSO2.Copyfile FichierSource2, CreateFolderDemo & "fichier2" & ".mdb"
  19.  
  20.  
  21.  
  22. Function FormatDate(ValDate, Caractere)
  23. Dim MoisDate, JourDate
  24. ValDate = CDate(ValDate)
  25. Caractere = CStr(Caractere)
  26. MoisDate = Month(ValDate)
  27. JourDate = Day(ValDate)
  28. FormatDate = CStr(Year(ValDate)) & Caractere
  29. If MoisDate < 10 Then
  30. FormatDate = FormatDate & "0"
  31. End If
  32. FormatDate = FormatDate & CStr(MoisDate) & Caractere
  33. If JourDate < 10 Then
  34. FormatDate = FormatDate & "0"
  35. End If
  36. FormatDate = FormatDate & CStr(JourDate)
  37. End Function


Donc maintenant, j'ai un script fonctionnel pour mon copier/coller automatique avec la creation quotidienne d'un dossier avec l'intitule contenant la date sous la forme:
"Sauvegarde du 2010-12-04"

Maintenant comment faire pour avoir une "purge" automatique?
Des suggestions? :D 
m
0
l
4 Décembre 2010 15:57:56

C'est nul :o 

J'te ponds un truc mieux.
m
0
l
Contenus similaires
4 Décembre 2010 16:16:12

C'est nul , c'est nul... je suis biologiste et toi ingenieur alors oui :o 
Mais ca fait ce que je veux :o 

Merci :jap: 
m
0
l
4 Décembre 2010 17:04:32

http://www.mediafire.com/?dblrfxc861ni127

Quand tu lances l'application, tu peux configurer le bouzin, et quand tu la lance avec le paramètre "-backup", la sauvegarde est effectuée. Tu peux aussi modifier les options dans le fichier XML à la main.
m
0
l
4 Décembre 2010 17:32:09

Impec'

Mais attend:
- j vois que tu as mis une limite de temps, une marge de sauvegardes et timeout de l'application.

Tu peux me preciser a quoi ca correspond?
Il y a une suppression automatique apres 30 jour ou apres 5 sauvegardes ?

Merci en tout cas
:D 
m
0
l
4 Décembre 2010 18:12:26

Bon il est bien mais il est nul aussi: on peut pas changer le fichier de destination via le logiciel.

Moi je veux qu'il copie de D:\ASI Database vers D:\Dossier de sauvegarde par exemple et quand je fais le changement, si j'eteind et rallume le logiciel, ben ca le garde paps en memoire :o 

Et un truc: il sauvegarde automatiquement ou je dois cliquer sur le bouton pour que la sauvegarde se fasse ? :D 
m
0
l
4 Décembre 2010 19:40:43

En plus il est completement naze: si je change en dur le repertoire de sauvegarde, ca change aussi le repertoire source donc il me sauvegarde plus rien :o 

m
0
l
4 Décembre 2010 21:02:30

:o 

Je m'occupe de mettre un autre dossier de sauvegarde.

Pour les options, permet d'éviter la suppression de toutes les sauvegardes, genre si la purge est à 30 jours, et que tu lances pas le truc pendant plus de 30 jours... bah dès que tu le relance, ça purge toutes les sauvegardes précédentes. La marge, c'est le nombre qu'il conservera toujours, même si ils sont expirés.
Ce qui veut dire que même 30 jours plus tard, si toutes les sauvegardes sont expirées, il te gardera quand même les 5 dernières. Malin :dawa: 

Sinon le timeout, c'est au cas où ça plante, ce qui ne devrait jamais arriver. C'est la limite absolue du temps que l'application sera lancée en fait, et si ça répond pas au bout de 20 secondes, ça considère que c'est planté. Touche pas, fais comme si c'était pas là. Au mieux, augmente le si tu vois qu'il a du mal, le seul truc qui pourrait l'empêcher, c'est que tes fichiers à copier soient super gros, et donc qu'il prenne beaucoup de temps à les copier. Enfin à toi de voir si les fichiers sont gros, mais normalement y'a pas à toucher.


Sinon pour changer les options dans le logiciel, faut appuyer sur "Accepter" :o 
m
0
l
4 Décembre 2010 21:55:30

J'ai clique sur "accepter" mais ca sauvegarde pas plus :o 

Sinon, ca copie des fichiers allant de 100Ko a 70Mo (selon les postes d'analyse et leur activite quotidienne).

Donc je dois modifier le Timeout ? :dawa: 
m
0
l
4 Décembre 2010 22:16:36

He dit, ca t'interresserait pas plutot de m'expliquer comment ajouter une fonction purge a mon script de merde ? :dawa: 

Au moins je saurais ce que ca fait parce que la, il est beau ton truc, je dit pas, mais est ce que je peux le lancer avec le planificateur de tache Windows pour faire un sauvegarde 100% automatique ?
Parce que si il y a un bouton "faire la sauvegarde maintenant", ca fait pas tres .... automatique :D 

Et puis si 'eteind le programme apres avoir change le chemin de destination et clique sur "accepter", ben ca me remet le chemin initial, en gro sje dois modifier en dur donc est ce que si je modifie le sautres valeurs, je dois le faire en dur?
Il sert a quoi alors le bouton "accepter" ? :dawa: 
m
0
l
4 Décembre 2010 22:23:10

Le timeout mets le à un truc genre 600, ça fait 10 minutes. De toute façon ça prendra moins que ça, et y'a peu de raisons que ça plante d'une telle façon.

Et en effet j'avais carrément oublié la sauvegarde des options de façon durable. Ça les mémorisait tant que l'appli restait lancée, mais après ça sautait.

Déjà la V3 :dawa: 

http://www.mediafire.com/?2d9dhz59r7vv23l

Et pour le backup auto, faut le lancer avec le paramètre "-backup", donc dans le planificateur tu rajoute ça à la fin, et là ça sera 100% automatique, et t'auras pas l'interface que tu vois quand tu le lance à la main. Fais un raccourci rapidement pour le lancer, et tu verras. Et j'ai testé ça à mort pour être sûr que ça plante pas, et je suis d'ailleurs heureux d'apprendre que même si tout ne marchait pas vraiment, ça plantait pas :dawa: 
Donc franchement je ferais assez confiance à mon truc.

Maintenant pour la purge, ça récupère la date dans le nom du dossier, ça la reconvertit en date, ça compare à aujourd'hui, ça les classe par ancienneté... C'est pas de la petite prog quoi, et même si ça a pas l'air compliqué, c'est mine de rien ce qu'on passe 99% du temps à faire en programmation : trier des conneries de ce genre :D 
Donc ton script va exploser si j'y rajoute tout ça en fait. Surtout que moi je vérifie si les dossiers et fichiers existent et bien et tout le tintouin, ton truc plante au moindre truc sans donner d'explication. Donc je me doute que tu dois trouver ça "énorme" pour faire un backup :D , mais crois moi que j'ai fait le minimum possible pour rester simple et fiable, sans faire un truc trop lourd.
m
0
l
4 Décembre 2010 22:25:58

Et donc, ca permet de faire le truc automatiquement ou faut cliquer sur le bouton tous les jours ? :D 

Maintenant c'est le bouton "retablir" qui sert a rien.
m
0
l
4 Décembre 2010 22:28:54

F5 §§§§§ [:falzar]
m
0
l
4 Décembre 2010 22:30:04

Je retourne jouer à Halo entre temps :fille: 
m
0
l
6 Décembre 2010 22:53:49

Citation :
Et pour le backup auto, faut le lancer avec le paramètre "-backup", donc dans le planificateur tu rajoute ça à la fin, et là ça sera 100% automatique, et t'auras pas l'interface que tu vois quand tu le lance à la main. Fais un raccourci rapidement pour le lancer, et tu verras. Et j'ai testé ça à mort pour être sûr que ça plante pas, et je suis d'ailleurs heureux d'apprendre que même si tout ne marchait pas vraiment, ça plantait pas
Donc franchement je ferais assez confiance à mon truc.


Heu, tu peux decrire un peu la procedure la?

Parce que je lance l'outil de creation de tache planifiee mais je sais pas quoi selectionner dans le lot, l'executif?

m
0
l
6 Décembre 2010 23:07:01

Ouais tu choisis l'exe, mais bien souvent il te laisse rien rajouter. Une fois que t'as créé la tâche, retourne dans les options, et dans le chemin d'exécution, tu rajoute -backup à la fin.

Genre : c:\dossier\MDBackup.exe -backup
m
0
l
6 Décembre 2010 23:22:35

OK

On va tester ca alors.
Merci :jap: 
m
0
l
6 Décembre 2010 23:28:08

Crée simplement un raccourci vers l'appli, et rajoute le -backup à la fin, et tu verras ce que c'est sensé faire.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS