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 :

Comment connaître quel numéro d'errorlevel correspond a quoi ? [Batch]


Sujet :

Scripts/Batch

  1. #1
    Rédacteur/Modérateur
    Avatar de NorocBzh
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2008
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 834
    Points : 1 265
    Points
    1 265
    Par défaut
    Salut,

    J'ai une petite question concernant la variable "%errorlevel%".
    Comment peut on savoir a quelle erreur correspond le numéro qu'elle retourne ?

    Bon, le 0 signifie qu'il n'y a pas d'erreurs, mais a quoi correspond un errorlevel 4 par exemple ?

    Merci

    Par exemple, j'ai fait plusieurs tests :

    je fais un petit batch qui renomme un fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @Echo off & Setlocal enableextensions enabledelayedexpansion
    title Gestion des Errorlevels
    echo err : %errorlevel%
    rename "d:\test\test.pdf" test2.pdf
    echo err : %errorlevel%
    si le fichier n'existe pas, il me renvoit errorlevel à 1,
    si le fichier est déjà ouvert, il me renvoit errorlevel à 1,
    et si je fais une erreur de syntaxe dans la commande, il me renvoit toujours errorlevel à 1

    Comment faire pour différencier ces erreurs ?


    [edit] Existe-il un tableau de correspondances entre les numéros des erreurs et les erreurs correspondantes ?

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    Il n'y a qu'une seule convention (et tu la connais), c'est OK ==> 0 (et encore, ce n'est qu'une convention ...)
    Toutes les autres valeurs, c'est le développeur qui les a fixées.

    Parfois, on trouve les valeurs dans la documentation, ainsi pour grep par exemple :
    Citation Envoyé par man grep
    Normalement, le code de retour est 0 si des concordances ont été trouvées, et 1 si aucune concordances n'a été faite. Mais le code est 2 si une erreur est survenue, à moins que les options -q, --quiet ou --silent ne soient utilisées et qu'une ligne ne soit trouvée.

  3. #3
    Rédacteur/Modérateur
    Avatar de NorocBzh
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2008
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 834
    Points : 1 265
    Points
    1 265
    Par défaut
    Salut et merci de ta réponse.

    Citation Envoyé par ram-0000
    Toutes les autres valeurs, c'est le développeur qui les a fixées.
    Comment peut on les définir ?

  4. #4
    Expert éminent
    Avatar de shawn12
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Avril 2006
    Messages
    3 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2006
    Messages : 3 368
    Points : 6 800
    Points
    6 800
    Par défaut
    On ne peut pas "les définir".
    C'est la personne qui a écrit la commande (rename par exemple) qui décide quels codes ERRORLEVEL elle renvoie).

  5. #5
    Rédacteur/Modérateur
    Avatar de NorocBzh
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2008
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 834
    Points : 1 265
    Points
    1 265
    Par défaut
    Citation Envoyé par shawn12 Voir le message
    On ne peut pas "les définir".
    C'est la personne qui a écrit la commande (rename par exemple) qui décide quels codes ERRORLEVEL elle renvoie).
    D'accord, merci beaucoup de ta réponse.

    Encore une petite question du coup
    Sais-tu où peut on trouver ces fonction dans windows ? (pour peut-être pouvoir regarder dans le code de ces fonctions)

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 369
    Points
    50 369
    Par défaut
    C'est la personne qui écrit un programme qui décide des valeurs à retourner. Ainsi, si on prend le cas du programme rename, cette personne pourrait énumérer les code de retour comme cela :
    • 0 succès
    • 1 fichier source manquant
    • 2 pas de droit de lecture sur le fichier source
    • 3 fichier destination existant
    • 4 par le droit d'écriture dans le répertoire destination
    • 5 fichier source = fichier destination
    • ...

    Ce code de retour est retourné par la fonction exit(). C'est aussi la valeur retournée par la fonction main()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int main(int argc, char * argv [])
    {
       return 12;   // valeur qui est récupérée par errorlevel dans un shell
    }

  7. #7
    Rédacteur/Modérateur
    Avatar de NorocBzh
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2008
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 834
    Points : 1 265
    Points
    1 265
    Par défaut
    Merci beaucoup de vos réponse

  8. #8
    Membre éprouvé
    Avatar de maxim_um
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 895
    Points : 1 018
    Points
    1 018
    Par défaut
    Salut,

    Attention! Il ne faut pas perdre de vue que toutes les commandes ne renvoient pas systématiquement un code de retour, à fortiori un «errorlevel».

  9. #9
    Membre à l'essai
    Profil pro
    Developer
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Developer

    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Commande EXIT pour ERRORLEVEL
    @NorocBzh

    Tu peux utiliser la commande "EXIT" pour retourner un ERRORLEVEL de ton choix comme ceci :

    EXIT /B 3 // Va retourner un ERRORLEVEL 3

    Note: ERRORLEVEL est limité à 0..255

    Bruno

  10. #10
    Membre averti

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Points : 387
    Points
    387
    Billets dans le blog
    1
    Par défaut
    Note: ERRORLEVEL est limité à 0..255
    Tu es sur de toi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
    Call :Test
    echo %errorlevel%
    echo The end ?&  pause & exit
    :Test
    exit /b 999
    done

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Répertoire actuel : C:\Documents and Settings\Administrateur\Bureau
    999
    The end ?
    Appuyez sur une touche pour continuer...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/10/2013, 22h47
  2. Réponses: 4
    Dernier message: 05/05/2012, 16h02
  3. Comment connaître sur quel port ouvert sur ma machine?
    Par sebac dans le forum Général Java
    Réponses: 5
    Dernier message: 23/12/2009, 14h41
  4. Réponses: 12
    Dernier message: 02/08/2009, 13h18
  5. [MySQL] Comment connaître le numéro d'un enregistrement ?
    Par Cazman dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 31/07/2006, 12h01

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