Problème avec l'utilisation de %ERRORLEVEL%
Bonjour à toutes et tous.
J'ai un petit problème en DOS.
Environnement :
- OS : Windows Server 2003
- Compresseur : 7-zip
- outil spécifique : find gnu
Voilà mon algo :
1. Je decompresse un fichier .zip
2. Je teste si tout c'est bien passé
2.1 Decompression OK : Je supprime le fichier .zip
2.2 Decompression KO : ecriture dans log
Mon problème se situe au niveau du 2, lorsque j'utilise la variable %ERRORLEVEL%.
J'ai d'abord fait des tests en live, i.e. directement sous DOS, et ce de la manière suivante :
Pour un fichier mauvais dont j'ai changé l'extension depuis .txt vers .zip à la main :
Code:
1 2 3 4 5 6 7 8 9 10
| C:\PROGRA~1\7-Zip>7z.exe e E:\test\mauvais.zip
7-Zip 4.32 Copyright (c) 1999-2005 Igor Pavlov 2005-12-09
Processing archive: E:\test\mauvais.zip
Error: E:\test\mauvais.zip is not supported archive
C:\PROGRA~1\7-Zip>echo %ERRORLEVEL%
2 |
Pour un bon fichier zippé par 7zip :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| C:\PROGRA~1\7-Zip>7z.exe e E:\test\bon.zip
7-Zip 4.32 Copyright (c) 1999-2005 Igor Pavlov 2005-12-09
Processing archive: E:\test\bon.zip
Extracting bon.txt
Everything is Ok
C:\PROGRA~1\7-Zip>echo %ERRORLEVEL%
0 |
Je me suis donc basé sur ces valeurs de %ERRORLEVEL% pour mon test de bon déroulement de la décompression et j'ai écrit un ch'tit code en DOS :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| @echo OFF
SET LOG=monFichier.log
setlocal enableDelayedExpansion
echo DEBUT\n\n > %LOG%
for /F %%f in ('E:\find_gnu.exe E:\test -name *.zip -type f -print') do (
SET monfichier=%%f
C:\Progra~1\7-zip\7z.exe t !monfichier!
if %ERRORLEVEL% NEQ 0 (
echo Code Retour : %ERRORLEVEL% - Decompression !monfichier! :KO >> %LOG%
) else (
echo Code Retour : %ERRORLEVEL% - Decompression !monfichier! OK >> %LOG%
)
)
endlocal |
Cependant, je constate au niveau de ma log que la décompression se passe toujours bien. :aie:
Code:
1 2 3
| DEBUT\n\n
Code Retour : 0 - Decompression E:\test\bon.zip OK
Code Retour : 0 - Decompression E:\test\mauvais.zip OK |
Aussi mes questions sont les suivantes :
1. Comment se fait-il que la valeur de %ERRORLEVEL% soit toujours de 0 ?
2. Comment faire pour récupérer la réelle valeur de retour de ma ligne de commande relative à 7-zip ?
3. Est-il possible qu'en fait c'est ma syntaxe de %ERRORLEVEL% qui ne fonctionne pas ?
Merci d'avance pour votre aide.
Cdt.
Bahan