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 :
Pour un bon fichier zippé par 7zip :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Cependant, je constate au niveau de ma log que la décompression se passe toujours bien.
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 @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
Aussi mes questions sont les suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DEBUT\n\n Code Retour : 0 - Decompression E:\test\bon.zip OK Code Retour : 0 - Decompression E:\test\mauvais.zip OK
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
Partager