Pb avec un fichier batch sous windows (shell)

Nangel38 -  
abouder Messages postés 14 Statut Membre -
Bonjour,
je e comprend pas pourquoi rien ne se passe quand j'exécute mon script dans l'invite de commande sous Windows
le but du script étant de déterminer a quelle catégorie appartient la personne qui rentre sa date de naissance en argument.
merci d'avance pour votre aide.

@echo off
if "%1"=="/?" goto usage
if "%1"==""( echo Aucun parametre : rentrez votre annee de naissance
goto fin )
set /a "diff=1969-%1"
if %diff% LSS 0 (set CAT1 = veterans
goto ecrire)
if "%1"=="1986"( set CAT1 = "seniors"
goto ecrire)
if "%1"=="1970"( set CAT1 = "seniors"
goto ecrire)
if "%1"=="1989"( set CAT1 = espoir
goto ecrire)
if "%1"=="1987"( set CAT1 = espoir
goto ecrire)
if "%1"=="1991"( set CAT1 = "juniors"
goto ecrire)
if "%1"=="1990"( set CAT1 = juniors
goto ecrire)
if "%1"=="1993"( set CAT1 = cadets
goto ecrire)
if "%1"=="1992"( set CAT1 = cadets
goto ecrire)
if "%1"=="1995"( set CAT1 = minimes
goto ecrire)
if "%1"=="1994"( set CAT1 = minimes
goto ecrire)
if "%1"=="1997"( set CAT1 = benjamins
goto ecrire)
if "%1"=="1996"( set CAT1 = benjamins
goto ecrire)
if "%1"=="1999"( goto ecrire
echo poussin)
if "%1"=="1998"( set CAT1 = poussins
goto ecrire)
else ( set CAT1 = "ecole d'athlestisme"
goto ecrire)
:ecrire
echo la categorie correspondant a l'annee de naissance : %1 est : %CAT1%
goto fin
:usage
echo format de la commande : Categorie anneeDeNaissance
:fin
Configuration: Windows Vista
Firefox 3.5.5

4 réponses

  1. abouder Messages postés 14 Statut Membre 8
     
    salut Nangel38
    vous devez faire un pause pour voir le résultat , ajoutez l'instruction soulignée sous dessous :
    @echo off
    if "%1"=="/?" goto usage
    if "%1"==""( echo Aucun parametre : rentrez votre annee de naissance
    goto fin )
    set /a "diff=1969-%1"
    if %diff% LSS 0 (set CAT1 = veterans
    goto ecrire)
    if "%1"=="1986"( set CAT1 = "seniors"
    goto ecrire)
    if "%1"=="1970"( set CAT1 = "seniors"
    goto ecrire)
    if "%1"=="1989"( set CAT1 = espoir
    goto ecrire)
    if "%1"=="1987"( set CAT1 = espoir
    goto ecrire)
    if "%1"=="1991"( set CAT1 = "juniors"
    goto ecrire)
    if "%1"=="1990"( set CAT1 = juniors
    goto ecrire)
    if "%1"=="1993"( set CAT1 = cadets
    goto ecrire)
    if "%1"=="1992"( set CAT1 = cadets
    goto ecrire)
    if "%1"=="1995"( set CAT1 = minimes
    goto ecrire)
    if "%1"=="1994"( set CAT1 = minimes
    goto ecrire)
    if "%1"=="1997"( set CAT1 = benjamins
    goto ecrire)
    if "%1"=="1996"( set CAT1 = benjamins
    goto ecrire)
    if "%1"=="1999"( goto ecrire
    echo poussin)
    if "%1"=="1998"( set CAT1 = poussins
    goto ecrire)
    else ( set CAT1 = "ecole d'athlestisme"
    goto ecrire)
    :ecrire
    echo la categorie correspondant a l'annee de naissance : %1 est : %CAT1%
    goto fin
    :usage
    echo format de la commande : Categorie anneeDeNaissance
    :fin
    pause

    n'oubliez pas de mentionner que votre pb est résolu SVP

    wada3an
    2
  2. zavenger Messages postés 817 Statut Membre 161
     
    Bonjour,

    Pour que cela marche il faut respecter la syntaxe suivante :

    if "%1"=="" ( echo Aucun parametre : rentrez votre annee de naissance
    goto :fin )  
    

    -Espace entre le test et l'action : if "%1"=="" ( et non pas if "%1"==""(
    -Appel d'une etiquette avec un : devant

    Le test est fait a l'envers :

    if %diff% GTR 0 (set CAT1 = veterans
    goto :ecrire)

    Si tu veux voir ce que fait ton code

    @echo on a la place de @echo off
    Tu remets off quand ton code fonctionne
    1
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    et pas d'espace avec le set sinon tu as un espace dans le nom de la variable
    C:> set CAT1 = veterans
    C:> echo %CAT1%
    %CAT1%
    C:> echo %CAT1 %
     veterans
    C:> set CAT1=veterans
    C:> echo %CAT1%
    veterans
    1
  4. abouder Messages postés 14 Statut Membre 8
     
    c'est un problème de syntaxe voici votre code, voici votre code corrigé

    @echo off
    if "%1"=="/?" goto usage
    if "%1"=="" ( echo Aucun parametre : rentrez votre annee de naissance
    goto fin )
    set /a "diff=1969-%1"
    if %diff% LSS 0 (set CAT1="veterans"
    goto ecrire)
    if "%1"=="1986" ( set CAT1="seniors"
    goto ecrire)
    if "%1"=="1970" ( set CAT1 ="seniors"
    goto ecrire)
    if "%1"=="1989" ( set CAT1=espoir
    goto ecrire)
    if "%1"=="1987" ( set CAT1=espoir
    goto ecrire)
    if "%1"=="1991" ( set CAT1="juniors"
    goto ecrire)
    if "%1"=="1990" ( set CAT1=juniors
    goto ecrire)
    if "%1"=="1993" ( set CAT1=cadets
    goto ecrire)
    if "%1"=="1992" ( set CAT1=cadets
    goto ecrire)
    if "%1"=="1995" ( set CAT1=minimes
    goto ecrire)
    if "%1"=="1994" ( set CAT1=minimes
    goto ecrire)
    if "%1"=="1997" ( set CAT1=benjamins
    goto ecrire)
    if "%1"=="1996" ( set CAT1=benjamins
    goto ecrire)
    if "%1"=="1999" ( goto ecrire
    echo poussin)
    if "%1"=="1998"( set CAT1=poussins
    goto ecrire)
    else (set CAT1="ecole d'athlestisme"
    goto ecrire)
    :ecrire
    echo la categorie correspondant a l'annee de naissance : %1 est : %CAT1%
    goto fin
    :usage
    echo format de la commande : Categorie anneeDeNaissance
    :fin
    pause
    1