Problème avec la commande GTR en batch
prof-poisson
-
prof-poisson Messages postés 72 Statut Membre -
prof-poisson Messages postés 72 Statut Membre -
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
-
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.-
- 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
-