Bonjour,

Tout d'abord Meilleurs Voeux à tous pour cette nouvelle année .

J'aurais besoin de vos lumières concernant un script de sauvegarde que je viens de coder. Mon problème est le suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
############################
#   Script de sauvegarde   #
############################
#
###Lancement du script
#
#
###Sauvegarde du repertoire Documents
#
Accès refusé
Impossible de créer le répertoire - E:\Documents\Ma musique
Accès refusé
Impossible de créer le répertoire - E:\Documents\Mes images
Accès refusé
Impossible de créer le répertoire - E:\Documents\Mes vidéos
Les fichiers ont ete copies sans erreur.
#
###Sauvegarde du repertoire Musique
#
Les fichiers ont ete copies sans erreur.
#
###Sauvegarde du repertoire Images
#
Les fichiers ont ete copies sans erreur.
#
###Sauvegarde du repertoire Videos
#
Les fichiers ont ete copies sans erreur.
#
###########################
#   Sauvegarde terminee   #
###########################
Ci-dessus le log que j'obtiens lorsque je lance mon script, vous pouvez voir 3 messages d'erreurs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Accès refusé
Impossible de créer le répertoire - E:\Documents\Ma musique
Accès refusé
Impossible de créer le répertoire - E:\Documents\Mes images
Accès refusé
Impossible de créer le répertoire - E:\Documents\Mes vidéos
Normalement dans cette partie du script l'objectif est de copier mon répertoire "Mes documents", via la commande XCOPY, vers mon disque dur externe. Et contrairement à ce qu'indique le log, il n'y a aucun répertoire "Ma musique", "Mes images" ou "Mes vidéos" dans ce répertoire, donc je ne comprends ce qu'il essaie de copier.

Important : J'utilise Windows 7 Professionnel et pour ceux qui ne le saurait pas les 3 répertoires "Ma musique", "Mes images" et "Mes vidéos" ne se trouvent plus dans le répertoire "Mes documents" contrairement à l'arborescence utilisée dans Windows XP.

Donc plusieurs possibilité pour expliquer cette erreur :
  1. Problème dans mon script
  2. Problème/Bug lié au changement d'arborescence depuis Windows XP


Voici mon script :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
@echo off

REM Script de sauvegarde
REM Version 1.0
REM 02/01/2010

REM Initialisation des variables
set HOME_DIR=C:\Users\ngressier

set DOC_DIR=C:\Users\ngressier\Documents
set MUSIC_DIR=C:\Users\ngressier\Music
set IMAGE_DIR=C:\Users\ngressier\Pictures
set VIDEO_DIR=C:\Users\ngressier\Videos

set SAVE_DOC_DIR=E:\Documents
set SAVE_MUSIC_DIR=E:\Musique
set SAVE_IMAGE_DIR=E:\Images
set SAVE_VIDEO_DIR=E:\Videos

set LOG_DOC_DIR=E:\Documents\Backup_Documents.txt
set LOG_MUSIC_DIR=E:\Musique\Backup_Musique.txt
set LOG_IMAGE_DIR=E:\Images\Backup_Images.txt
set LOG_VIDEO_DIR=E:\Videos\Backup_Videos.txt

set TIMESTAMP=%date:~0,2%/%date:~3,2%/%date:~6,4%_%time:~0,2%%time:~3,2%

echo ############################
echo #   Script de sauvegarde   #
echo ############################
echo #
echo ###Lancement du script
echo #

cd %HOME_DIR%

echo #
echo ###Sauvegarde du repertoire Documents
echo #

IF NOT EXIST %SAVE_DOC_DIR% GOTO ERROR_DOC_DIR
IF EXIST %SAVE_DOC_DIR% GOTO COPY_DOC_DIR

:COPY_DOC_DIR
echo %TIMESTAMP% > %LOG_DOC_DIR%
echo Backup Documents... >> %LOG_DOC_DIR%
xcopy %DOC_DIR% %SAVE_DOC_DIR% /D /E /C /R /H /I /K /Y /G >> %LOG_DOC_DIR%

IF ERRORLEVEL 5 GOTO DISKSPACE
IF ERRORLEVEL 4 GOTO LOWMEMORY
IF ERRORLEVEL 2 GOTO ABORT
IF ERRORLEVEL 1 GOTO NOFILE
IF ERRORLEVEL 0 GOTO SUCCESS_DOC

:ERROR_DOC_DIR
echo Repertoire Documents manquant.
GOTO END

:SUCCESS_DOC
echo Les fichiers ont ete copies sans erreur.

echo #
echo ###Sauvegarde du repertoire Musique
echo #

IF NOT EXIST %SAVE_MUSIC_DIR% GOTO ERROR_MUSIC_DIR
IF EXIST %SAVE_MUSIC_DIR% GOTO COPY_MUSIC_DIR

:COPY_MUSIC_DIR
echo %TIMESTAMP% > %LOG_MUSIC_DIR%
echo Backup Musique... >> %LOG_MUSIC_DIR%
xcopy %MUSIC_DIR% %SAVE_MUSIC_DIR% /D /E /C /R /H /I /K /Y /G >> %LOG_MUSIC_DIR%

IF ERRORLEVEL 5 GOTO DISKSPACE
IF ERRORLEVEL 4 GOTO LOWMEMORY
IF ERRORLEVEL 2 GOTO ABORT
IF ERRORLEVEL 1 GOTO NOFILE
IF ERRORLEVEL 0 GOTO SUCCESS_MUSIC

:ERROR_MUSIC_DIR
echo Repertoire Musique manquant.
GOTO END

:SUCCESS_MUSIC
echo Les fichiers ont ete copies sans erreur.

echo #
echo ###Sauvegarde du repertoire Images
echo #

IF NOT EXIST %SAVE_IMAGE_DIR% GOTO ERROR_IMAGE_DIR
IF EXIST %SAVE_IMAGE_DIR% GOTO COPY_IMAGE_DIR

:COPY_IMAGE_DIR
echo %TIMESTAMP% > %LOG_IMAGE_DIR%
echo Backup Images... >> %LOG_IMAGE_DIR%
xcopy %IMAGE_DIR% %SAVE_IMAGE_DIR% /D /E /C /R /H /I /K /Y /G >> %LOG_IMAGE_DIR%

IF ERRORLEVEL 5 GOTO DISKSPACE
IF ERRORLEVEL 4 GOTO LOWMEMORY
IF ERRORLEVEL 2 GOTO ABORT
IF ERRORLEVEL 1 GOTO NOFILE
IF ERRORLEVEL 0 GOTO SUCCESS_IMAGE

:ERROR_IMAGE_DIR
echo Repertoire Images manquant.
GOTO END

:SUCCESS_IMAGE
echo Les fichiers ont ete copies sans erreur.

echo #
echo ###Sauvegarde du repertoire Videos
echo #

IF NOT EXIST %SAVE_VIDEO_DIR% GOTO ERROR_VIDEO_DIR
IF EXIST %SAVE_VIDEO_DIR% GOTO COPY_VIDEO_DIR

:COPY_VIDEO_DIR
echo %TIMESTAMP% > %LOG_VIDEO_DIR%
echo Backup Videos... >> %LOG_VIDEO_DIR%
xcopy %VIDEO_DIR% %SAVE_VIDEO_DIR% /D /E /C /R /H /I /K /Y /G >> %LOG_VIDEO_DIR%

IF ERRORLEVEL 5 GOTO DISKSPACE
IF ERRORLEVEL 4 GOTO LOWMEMORY
IF ERRORLEVEL 2 GOTO ABORT
IF ERRORLEVEL 1 GOTO NOFILE
IF ERRORLEVEL 0 GOTO SUCCESS_VIDEO

:ERROR_VIDEO_DIR
echo Repertoire Videos manquant.
GOTO END

:SUCCESS_VIDEO
echo Les fichiers ont ete copies sans erreur.
GOTO END

REM Gestion des erreurs
:DISKSPACE
echo Une erreur d'ecriture disque est survenue.
GOTO END

:LOWMEMORY
echo Erreurs diverses comme manque de memoire, espace disque insuffisant, nom de lecteur invalide ou syntaxe incorrecte.
GOTO END

:ABORT
echo L'utilisateur a utilise [Ctrl]+[C] pour arreter xcopy. 
GOTO END

:NOFILE
echo Aucun fichier a copier n'a ete trouve.
GOTO END

:END

echo #
echo ###########################
echo #   Sauvegarde terminee   #
echo ###########################
echo.

pause
Y-a-t-il une erreur dans mon script ? Ou alors une solution pour ne plus afficher ces "fausses" erreurs ?

C'est le premier batch que je code donc si vous avez des remarques pour améliorer ou optimiser mon script n'hésitez pas .

D'ailleurs en parlant d'améliorer mon script, j'ai remarqué que la commande XCOPY associée à l'option /D permettait de faire de la copie incrémentielle, c'est-à-dire ne copier que ce qui a changé entre le répertoire source et le répertoire de sauvegarde, ce qui est très pratique pour éviter de tout copier à chaque fois.

Néanmoins si un répertoire ou un fichier a été supprimé dans le répertoire source, XCOPY ne le supprimera pas dans le répertoire de sauvegarde . Y-a-t-il une solution avec XCOPY ou alors autrement ?

Merci d'avance à tous