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 :

[Débutant] ordre des label [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Bobybx
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2005
    Messages : 122
    Par défaut [Débutant] ordre des label
    Bonjour,

    je suis un grand débutant dans le domaine du batch et je me pose une question au sujet des label. J'ai créé deux scripts batch répondants à mon besoin que je souhaite mutaliser, vu q'uils ont des fonctionnalités communes.

    J'ai donc décidé de faire un seul script avec un système de choix. Là je me suis rendu compte que je ne savais pas faire appel à des label dans des ordres différents selon le choix.

    Mon but est, selon le choix tapé, d'effectuer des appels aux labels dans un ordre différent, une sorte de :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    set /p choix=
    if %choix%==1 goto choix1
    if %choix%==2 goto choix2
    goto fin
    
    :choix1
    goto label1
    goto label2
    goto label4
    goto label3
    goto fin
    
    :choix2
    goto label4
    goto label2
    goto label1
    goto fin
    
    :label1
    echo label1
    
    :label2
    echo label2
    
    :label3
    echo label3
    
    :label4
    echo label4
    
    :fin
    echo fin
    pause
    On peut voir par exemple que mon "label4" est suivi de "label3" ou "label2" selon le choix. Mon exemple est simple, donc on peut imaginer conditionner la sortie de mon label par un if. Une sorte de (code qui fonctionne) :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    set /p choix=
    if %choix%==1 goto choix1
    if %choix%==2 goto choix2
    goto fin
    
    :choix1
    goto label1
    
    :choix2
    goto label4
    
    :label1
    echo label1
    if %choix%==1 goto label2
    if %choix%==2 goto fin
    
    :label2
    echo label2
    if %choix%==1 goto label4
    if %choix%==2 goto label1
    
    :label3
    echo label3
    if %choix%==1 goto fin
    
    :label4
    echo label4
    if %choix%==1 goto label3
    if %choix%==2 goto label2
    
    :fin
    echo fin
    pause
    Imaginons maintenant que j'ai 5 choix au lieu de 2, et 15 label au lieu de 4. Si j'ai le nombre de choix qui grandit, mes combinaisons d'enchainements de labels également, et la viabilité du if ne me semble plus OK. Je me vois mal faire un 5 "if" sur mes 15 "label", d'autant plus que la maintenabilité du script sera difficile si un ordre d'enchainement des label venait à changer.
    Je sollicite donc votre aide pour savoir quelle est la bonne manière pour appeler plusieurs label dans des ordres différents selon un choix.

    Merci pour votre aide.

  2. #2
    Membre Expert 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 : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Par défaut
    Bonjour

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    set /p choix=
    if %choix%==1 goto :choix1
    if %choix%==2 goto :choix2
    goto fin
    
    :choix1
    call :label1
    call :label2
    call :label4
    call :label3
    goto :fin
    
    :choix2
    call :label4
    call :label2
    call :label1
    goto :fin
    
    :label1
    echo label1
    goto :EOF
    
    :label2
    echo label2
    goto :EOF
    
    :label3
    echo label3
    goto :EOF
    
    :label4
    echo label4
    goto :EOF
    
    :fin
    echo fin
    pause
    Ceci fonctionne. La fonction call permet d'appeler un bout de code labellisé et reprendre ensuite l'exécution. Il faut simplement ne pas oublier les goto :EOF (que l'on pourrait voir comme des marqueurs de fin de fonction)

  3. #3
    Membre confirmé Avatar de Bobybx
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Avril 2005
    Messages : 122
    Par défaut
    Je ne connaissais pas cette fonction "call" mais elle répond totalement à mon besoin.

    Merci beaucoup pour ton aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/02/2011, 12h01
  2. Requete créant des Labels Dynamiquement et les placent dans l'ordre
    Par forzaxelah dans le forum Bases de données
    Réponses: 11
    Dernier message: 08/06/2006, 17h35
  3. [XSL][débutant]trié l'ordre des éléments d'un fichier xml
    Par pistache42 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 19/04/2006, 10h37
  4. [Débutant]Ordre des champs dans une table
    Par goony dans le forum Débuter
    Réponses: 4
    Dernier message: 16/02/2006, 12h05
  5. [débutant] Ordre des champs de saisie par la touche tab
    Par almisuifre dans le forum C++Builder
    Réponses: 10
    Dernier message: 03/03/2005, 19h45

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