[BATCH] sauvegarde auto fichiers au démarrage

Résolu/Fermé
Utilisateur anonyme - 15 août 2014 à 12:22
 Utilisateur anonyme - 4 sept. 2014 à 18:50
Bonjour,

Le sujet est simple : je souhaiterais créer un script batch qui sauvegarde mes fichiers, de n'importe quel répertoire, vers un disque externe.

Je pense à la fonction XCOPY. Je pourrais mettre ce batch dans les programmes de démarrage.

Or je cherche à envoyer de petites notifications indiquant par exemple que le disque n'est pas branché ou qu'un fichier n'a pas été copié par exemple.

Connaissez vous une astuce ?

Merci d'avance

BEHEMOGER
A voir également:

16 réponses

Mrico Messages postés 139 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 21 septembre 2020 3
17 août 2014 à 12:47
Bonjour,

Pour la présence de ton disque ou pas, rien de plus simple.

Tu peux utiliser la commande IF EXIST qui va te permettre de savoir si ton disque est branché ou pas. Ce qui suit est une première proposition que tu peux améliorer (rajoutant la boucle ESLE pour éviter la seconde ligne)

@echo off
IF EXIST Z:\NUL ECHO Disque OK
IF NOT EXIST Z:\NUL ECHO Pas de disque

(j'ai pris Z:\ pour la lettre de montage de ton disque)
Ensuite le script de sauvegarde se lance ou non selon la présence de ton disque. Tu peux faire un fichier de log qui te permettra de savoir si ta sauvegarde s'est faite correctement.

Si tu as besoin de plus de détails ou d'aide pour la suite, n'hésites pas
0
Utilisateur anonyme
25 août 2014 à 18:39
Merci pour cette ébauche de script.

Je pensais que la commande if exist servait uniquement à tester la présence de fichiers ou répertoires, mais si on y réfléchit bien, un périphérique externe branché est aussi un répertoire LOL ^^. Je croyais qu'on avait besoin d'une autre commande, mais faut réfléchir de façon simple en fait.

Bon, pour un log, je vais voir.

Oui, je pense faire un ELSE "ne rien faire", mais pourquoi pas afficher un message qui dit "attention, disque non branché, veuillez essayer une sauvegarde", pour me rappeler que c'est utile de sauvegarder.

Quoique, je pensais à un autre script : quelque chose qui m'enverrait un message au bout d'une certaine date que je n'ai pas sauvegardé à X endroit...

Et autre chose aussi j'aurais besoin de détails en effet...
Je suis expérimentateur en informatique, je connais les bases et bidouillages, j'essaie dans tous les sens, car je suis passionné, donc je comprends pas tout. Des fois la lettre de montage du disque change (D:/ puis E:/ puis F:/ ... ), à quoi cela est-ce dû ? Y a t il un moyen de remédier à cela, cad enregistrer sur le disque même s'il a changé de lettre ?

Merci
0
Mrico Messages postés 139 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 21 septembre 2020 3
26 août 2014 à 09:05
Bonjour,

Je ne suis pas spécialiste Système mais je suppose que ton disque prend la lettre suivante qui n'est pas prise par les disques internes. Tu peux peut-être, je pense, via la gestion des disques fixer la lettre du lecteur.

Concernant l'enregistrement sur le disque même s'il a changé de lettre.. je l'ai jamais fait, je ne sais pas si c'est possible.. A voir..

Pour te donner une idée pour le script, j'ai pour mon PC écrit un script qui fait une sauvegarde incrémentielle d'un de mes répertoires sur un de mes disques internes et me crée un fichier de log à la date de la sauvegarde. Il me spécifie quel(s) fichiers(s) ont été sauvegardés.

Toutes tes propositions sont réalisables.

Tu peux faire :

//TESTER LA PRESENCE DE TON DISQUE
IF EXIST ....... /LANCER TA SAUVEGARDE/ ELSE (ECHO Branchez le disque)

//FAIRE PATIENTER TON SCRIPT PENDANT QUELQUES SECONDES PUIS LE FAIRE REPARTIR

// TA SAUVEGARDE s'EXECUTE ......

// CREER UN FICHIER DE LOG

-----------

Concernant ton autre idée de script : l'idée serait de comparer la dernière date d'exécution de ton script original qui lance ta sauvegarde par rapport à la date d'aujourd'hui, puis de t'envoyer un message/pop up qui t'indique que si tu ne l'a pas fait sous les 15 jours, ce serait bien de la lancer. Qu'en dis-tu ?
0
Bon, un début de script fonctionne, en effet.
Je peux afficher OK s'il est branché, NON s'il ne l'est pas,
en modifiant le titre de la fenêtre title %DESTINATION% inaccessible s'il est déconnecté, et title SAVE FROM %SOURCE% to %DEST% s'il estconnecté
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
j'ai essayé la fonction xcopy, mais j'ai ce message d'erreur au batch :

"fichier introuvable - test"

quand je fais xcopy [source] [destination].


Voici mon script :

@ echo off

color 0F

set SOURCE=C:\Users\Mon_Nom\Desktop\test
set DEST=F:\destination

if exist F:\nul (goto :DISQUE_OK)
if not exist F:\nul (goto :NO_DISC)

:DISQUE_OK
title SAVE FROM %SOURCE% to %DEST%
echo.
echo Le disque dur est branche,
echo la sauvegarde va debuter...
echo.
xcopy "%SOURCE%" "%DEST%" /e
pause>nul

:NO_DISC
title %DEST% inaccessible !
echo.
echo Le disque n'est pas branche
echo pas de sauvegarde possible...
pause>nul


Puis j'ai ça sur la console :
(quand le disque est connecté)

0
Je sais pas si c'est dû à l'insertion de côtes en cas d'espaces, mais j'ai déjà essayé avec, et même résultat...

Le dossier TEST existe bien :




























Et j'ai essayé avec d'autres répertoires et arborescence c'est la même chose "fichier introuvable"...

Une idée ?

Moi je suis à court là...

La fonction XCOPY fonctionne donc bien sous CMD MS-DOS, alors pourquoi pas avec un fichier BATCH ??
0
Mrico Messages postés 139 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 21 septembre 2020 3
Modifié par Mrico le 26/08/2014 à 19:09
Je viens de tester ton script... il fonctionne correctement chez moi.

Voici texto ce que j'ai :
@ echo off

color 0F

set SOURCE="C:\Users\PC\Desktop\test1"
set DEST="S:\destination\"

if exist S:\nul (goto :DISQUE_OK)
if not exist S:\nul (goto :NO_DISC)

:DISQUE_OK
title SAVE FROM %SOURCE% to %DEST%
echo.
echo Le disque dur est branche,
echo la sauvegardé va debuter...

xcopy "%SOURCE%" "%DEST%" /E /H /R /Y /I /D

goto End
pause>nul

:NO_DISC
title %DEST% inaccessible !
echo.
echo Le disque n'est pas branche
echo pas de sauvegarde possible...
pause>nul
goto End

:End

=> J'ai uniquement remplacé la source pour qu'il corresponde à ce que j'ai sur mon pc et la destination.
Il me copie bien le fichier source. J'ai ajouté des paramètres au xcopy pour qu'il ne copie uniquement les fichiers modifiés et non pas ce qui est déjà sauvegardé.
Je t'ai rajouté aussi un goto End pour finir la condition DISQUE_OK, sinon il va continuer à la fin de ta sauvegarde sur la seconde condition.

Je vais essayer de creuser pourquoi le message d'erreur s'affiche mais c'est bizarre
0
Utilisateur anonyme
27 août 2014 à 11:17
Etrange, je bosse sur double écrans, soit un bureau étendu.
Peut être est-ce de là que ça vient ?
0
Mrico Messages postés 139 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 21 septembre 2020 3
27 août 2014 à 11:28
Non, aucune importance du nombre d'écran.
Malgré les quelques modifs du script, il y a toujours l'erreur ?
0
Utilisateur anonyme
27 août 2014 à 11:34
J'ai essayé en mettant le nom d'un fichier texte avec son extension, là ça fonctionne.

Encore plus bizarre j'arrive pas à le supprimer via ms dos en cmd avec del.

Quand je fais dir, il est toujours là...

En plus quand je fais eco QQCH>fichier.txt (qui est copié dans le DDE) j'ai l'accès qui est refusé...
0
Utilisateur anonyme
27 août 2014 à 11:49
Alors, on va dire que j'ai trouvé une solution... Plutôt une alternative.
Je crois que le batch ne parvenait pas à résoudre mon username, pour je ne sais quelle raison...

J'ai mis à la place de mon nom username la variable %username%, après vérification sur des forums... Ca marche mais j'aimerais comprendre la source du problème !
0
Utilisateur anonyme
27 août 2014 à 11:50
Maintenant, le contenu du dossier TEST est copié, mais ce que je voudrais c'est ce même dossier parent TEST copié avec son contenu aussi...
0
Utilisateur anonyme
27 août 2014 à 12:01
Voici mon script final (encore à modifier ^^)

@ echo off

color 0F

set SOURCE="C:\Users\%username%\Desktop\test"
set DEST="F:\DEST"

if exist F:\nul (goto :DISQUE_OK)
if not exist F:\nul (goto :NO_DISC)

:DISQUE_OK
title SAVE FROM %SOURCE% to %DEST%
echo.
echo Le disque dur est branche,
echo la sauvegarde va debuter...
echo.
echo %CD%
xcopy %SOURCE% %DEST% /E /H /R /Y /I /D
goto :end
pause>nul

:NO_DISC
title %DEST% inaccessible !
echo.
echo Le disque n'est pas branche
echo pas de sauvegarde possible...
goto :end
pause>nul

:end
echo.
echo appuyer sur une touche pour quitter...
pause>nul
0
Mrico Messages postés 139 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 21 septembre 2020 3
2 sept. 2014 à 15:11
ton username avait-il un espace ?

Je vois que ton script avance. As-tu trouvé pour copier ton dossier parent TEST ?
0
Utilisateur anonyme
4 sept. 2014 à 17:57
ton username avait-il un espace ?

ben non, justement, mon username n'avait pas d'espace...


As-tu trouvé pour copier ton dossier parent TEST ?

Je n'y ais pas encore travaillé, mais je vais m'y mettre.
0
J'ai pris une alternative pour le dossier TEST.
J'ai donné le même nom au chemin de la destination :

set SOURCE="C:\Users\%username%\Desktop\test"
set DEST="F:\DEST\test"

Maintenant je cherche à faire en sorte que ce soit une sorte de sauvegarde perso : genre je supprime un fichier/dossier dans la source, que ce soit idem dans la destination.
0