IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Problème avec l'utilisation de %ERRORLEVEL%


Sujet :

Scripts/Batch

  1. #1
    Membre régulier Avatar de Bahan
    Inscrit en
    Avril 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Avril 2006
    Messages : 147
    Points : 88
    Points
    88
    Par défaut 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 : 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
    Bats-toi de toutes tes forces tant que tu es en vie, et n'abandonne que quand tu es mort

  2. #2
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    je croi que c'est parce que ta variable errorlevel se trouve a l'intérieure d'une boucle for, essaye de la sortire

  3. #3
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    Bonjour,

    1. Comment se fait-il que la valeur de %ERRORLEVEL% soit toujours de 0 ?
    --> Comme l'a dit kokotis c'est parceque tu es dans un FOR, toutes les variables sont résolues à l'entrée du FOR. Donc ton %ERRORLEVEL% reste égal à sa valeur avant le FOR.

    2. Comment faire pour récupérer la réelle valeur de retour de ma ligne de commande relative à 7-zip ?
    --> Tu as déja activé les expansions retardées de variable, reste à les utiliser partout . Remplace %ERRORLEVEL% par !ERRORLEVEL!

    3. Est-il possible qu'en fait c'est ma syntaxe de %ERRORLEVEL% qui ne fonctionne pas ?
    --> La syntaxe m'a l'air correcte.
    Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

    La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

    (\ _ /)
    (='.'=)
    Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

Discussions similaires

  1. Problème avec l'utilisation de LogMessage
    Par vanquish dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 17/11/2005, 10h18
  2. Problème avec l'utilisation d'un module
    Par goblin dans le forum Modules
    Réponses: 4
    Dernier message: 09/11/2005, 20h55
  3. Problème avec l'utilisation de librairies
    Par Aradesh dans le forum MFC
    Réponses: 3
    Dernier message: 01/08/2005, 15h00
  4. [debutant] problème avec type à utiliser
    Par mlequim dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 15/07/2005, 16h08
  5. Problème avec l'utilisation de la fonction clock
    Par Matgic95 dans le forum C++Builder
    Réponses: 13
    Dernier message: 09/05/2005, 19h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo