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 : 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
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
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 : 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
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
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