Problème avec la commande GTR en batch

prof-poisson -  
prof-poisson Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je députe en programmation, j’ai créé un programme (si l’on peut appeler ça un programme) qui demande à l'utilisateur combien veut-il me donner d’argent, s’il tape un nombre plus grand que 50 (j'utilise la commande GTR) sa lui dit trop sympa et si le nombre est inférieur à 50 ça luit dit espèce de rat. Le seul truc, ses que s'il tape, par exemple : jdefy sa lui dit aussi trop sympa. Alors je voudrais savoir comment régler ça, merci d'avance!

1 réponse

brucine Messages postés 21694 Date d'inscription   Statut Membre Dernière intervention   3 427
 
Bonjour,

C'est donc que tu as forcément fait une erreur de syntaxe, montre ce que tu as fait.

Le comportement de IF peut être inattendu en présence d'opérateurs non numériques dont il faudra alors tester l'existence.
0
prof-poisson Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   4
 
If %combien% gtr 50 (
echo trop sympa!!
)
0
brucine Messages postés 21694 Date d'inscription   Statut Membre Dernière intervention   3 427 > prof-poisson Messages postés 65 Date d'inscription   Statut Membre Dernière intervention  
 
La question n'est pas si triviale qu'il y paraît parce qu'il faudrait envisager l'hypothèse de nombres décimaux ou négatifs.

En l'état, on compare une chaîne de caractères à un nombre, dans le meilleur des cas, ce sera la longueur de la chaîne qui sera comparée et le résultat est donc fantaisiste.

On en rajoute une couche puisqu'on utilise des caractères accentués ("espèce de rat") qui doivent être lus dans le batch par la page de code appropriée (65001).

Il n'y a donc pas d'autre solution dans le cas général que de tester si l'entrée est numérique:


@echo off
CHCP 65001 >NUL
:check
SET /p "combien=combien veux-tu donner?" || GOTO :check

setlocal enabledelayedexpansion
FOR /F "delims=0123456789" %%a in ("!combien!") DO SET "combien="
endlocal & SET "combien=%combien%"

IF NOT DEFINED combien (
ECHO Entrer une valeur numérique!
GOTO check
)

IF %combien% GTR 50 (
ECHO Trop sympa!
) ELSE (
ECHO Espèce de rat!
)
pause

:eof
1
prof-poisson Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   4 > brucine Messages postés 21694 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup!
0