Pb avec un fichier batch sous windows (shell)

Fermé
Nangel38 - 8 nov. 2009 à 20:35
abouder Messages postés 14 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 12 novembre 2009 - 9 nov. 2009 à 12:55
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
A voir également:

4 réponses

abouder Messages postés 14 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 12 novembre 2009 7
9 nov. 2009 à 11:42
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
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161
9 nov. 2009 à 12:13
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
9 nov. 2009 à 12:33
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
abouder Messages postés 14 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 12 novembre 2009 7
9 nov. 2009 à 12:55
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