Problème avec la commande GTR en batch

Fermé
prof-poisson - 10 févr. 2022 à 17:10
prof-poisson Messages postés 65 Date d'inscription jeudi 10 février 2022 Statut Membre Dernière intervention 22 avril 2022 - 11 févr. 2022 à 02:46
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 18384 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 décembre 2024 2 729
10 févr. 2022 à 17:50
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 jeudi 10 février 2022 Statut Membre Dernière intervention 22 avril 2022 3
10 févr. 2022 à 18:23
If %combien% gtr 50 (
echo trop sympa!!
)
0
brucine Messages postés 18384 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 décembre 2024 2 729 > prof-poisson Messages postés 65 Date d'inscription jeudi 10 février 2022 Statut Membre Dernière intervention 22 avril 2022
10 févr. 2022 à 23:07
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 jeudi 10 février 2022 Statut Membre Dernière intervention 22 avril 2022 3 > brucine Messages postés 18384 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 décembre 2024
11 févr. 2022 à 02:46
Merci beaucoup!
0