Bonjour,

J'ai un problème que je n'arrive pas à résoudre sur un script que je suis entrain de faire.
Le but de ce script est d'archiver automatiquement une source vers une destination à l'aide de winrar.
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
@echo off
@title /!\ Archivage automatique /!\

rem Effacement du shell courant:
cls

:variables
rem Localisation du repertoure courant:
set REPCOURANT=%~dp0
rem Localisation du repertoire WINRAR:
set REPWINRAR="C:\Program Files\WinRAR\"
rem Date du jour au format "YYYYMMJJ":
set DATEduJOUR=%date:~6,4%%date:~3,2%%date:~0,2%
rem Heure du jour:
set HEUREduJOUR=%time:~0,2%%time:~3,2%%time:~6,2%
rem Localisation du fichier contenant les sources et destinations:
set REPDATA="D:\ABC\Projets\Scripting\Archivage_automatique\"
rem Nom du fichier qui contient les donnees sur les sauvegardes:
set FILEDATA=data.csv
rem Concatenation de REPDATA et FILEDATA:
set DATA=%REPDATA%%FILEDATA%
rem Format du fichier de log:
set FORMATLOG=%DATEduJOUR%
rem Destination fichier de log:
set DESTLOG="D:\test_archiv\"
rem Redirection simple vers fichier de logs:
set REDIRLOG=%DESTLOG%history_%FORMATLOG%.txt
rem Choix d'un taux de compression :
set TAUXdeCOMP=5
	rem 0: Stocke : Ajoute les fichiers à archiver sans compression 
	rem 1: La plus rapide: faible compression
	rem 2: Rapide : Méthode de compression rapide
	rem 3: Normale : Méthode de compression normale (par défaut)
	rem 4: Bonne : Méthode de compression bonne (plus de compression)
	rem 5: Meilleure : Meilleure méthode de compression (plus de compression mais plus lente)
rem Localisation du logiciel sendmail.exe (envoi de mail):
set REPSENDMAIL=%REPCOURANT%sources\
rem Serveur SMTP:
set SRVSMTP=srv-exch.****.local
rem Destinataire mail
set DESTMAIL=administrateur@****.local
	
rem Création du fichier de log avec horodatage:
echo. >> %REDIRLOG%
echo ############ Demarrage de l'archivage: %date% - %time% ############ >>%REDIRLOG%
echo. >> %REDIRLOG%

rem Test de presence du fichier de donnees:
if not exist %DATA% goto :fin_prematuree1 

rem Recuperation des destinations, sources et noms des sauvegardes:
for /f "tokens=1,2,3,4 delims=," %%a IN ('type %DATA%') DO (

rem Envoi informations au fichier de log:
echo. >> %REDIRLOG%
echo ------ Archivage du repertoire [%%c] vers [%%b%%d] ------ >>%REDIRLOG%

rem Lancement de la commande d'archivage:
%REPWINRAR%Rar.exe a -t -r -as -s -m%TAUXdeCOMP% %%b%%d %%c  2>>%REDIRLOG% 
rem Si  erreur, on envoi message dans log:
if errorlevel 1 echo [NOK] Des erreurs ont ete detectee >>%REDIRLOG%
rem Si aucune erreur, on envoi message dans log:
if errorlevel 0 echo [OK] Aucune erreur n'a ete detectee >>%REDIRLOG%

REM | rmdir %%c /q /s 
)
goto :fin

rem Fin du programme:
:fin
echo. >> %REDIRLOG%
echo ############ Fin de l'archivage: %date% - %time% ############ >>%REDIRLOG%
echo. >> %REDIRLOG%
rem Envoi d'un mail a l'administrateur:
%REPSENDMAIL%sendEmail.exe -s %SRVSMTP% -f administrateur@%COMPUTERNAME% -t %DESTMAIL% -u "Recapitulatif archivage" < %REDIRLOG%
pause
exit

rem Fin du programme en cas d'erreur:
:fin_prematuree1
echo. >> %REDIRLOG%
echo [ERREUR] Le fichier %DATA% n'existe pas ! >>%REDIRLOG%
echo. >> %REDIRLOG%
exit
Ce que je souhaite faire dans la boucle FOR, après l'exécution de la commande winrar, c'est d'envoyer un message spécifique dans un fichier de log selon le niveau d'erreur de la commande:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
rem Lancement de la commande d'archivage:
%REPWINRAR%Rar.exe a -t -r -as -s -m%TAUXdeCOMP% %%b%%d %%c  2>>%REDIRLOG% 
rem Si  erreur, on envoi message dans log NOK:
if errorlevel 1 echo [NOK] Des erreurs ont ete detectee >>%REDIRLOG%
rem Si aucune erreur, on envoi message dans log OK:
if errorlevel 0 echo [OK] Aucune erreur n'a ete detectee >>%REDIRLOG%
Mon problème est que quand la commande winrar s'exécute correctement, donc errorlevel à 0, il m'envoi bien dans mon fichier de log [OK] ...
Mais si la commande rencontre une erreur, donc je suppose que c'est un errorlevel à 1, il m'envoi les deux messages [OK]... et [NOK] ...
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
############ Demarrage de l'archivage: 17/11/2014 - 10:35:08,07 ############ 
 
 
------ Archivage du repertoire [D:\ABC\ENI] vers [D:\test_archiv\ENI] ------ [OK] Aucune erreur n'a ete detectee 
 
------ Archivage du repertoire [D:\ABC\Applications] vers [D:\test_archiv\Applications] ------ [OK] Aucune erreur n'a ete detectee 
 
------ Archivage du repertoire [D:\ABC\Messagerie] vers [D:\test_archiv\Messagerie] ------ 

Impossible d'ouvrir D:\ABC\Messagerie\Outlook\Outlook.pst
Le processus ne peut pas acc‚der au fichier car ce fichier est utilis‚ par un autre processus.
Impossible d'ouvrir D:\ABC\Messagerie\Outlook\~Outlook.pst.tmp
Le processus ne peut pas acc‚der au fichier car ce fichier est utilis‚ par un autre processus.[NOK] Des erreurs ont ete detectee [OK] Aucune erreur n'a ete detectee 
 
############ Fin de l'archivage: 17/11/2014 - 10:35:45,22 ############
Auriez-vous des idées ?
En espérant avoir été clair !

Cordialement,
Benjamin