Problème avec la commande GTR en batch

prof-poisson -  
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

  1. brucine Messages postés 24928 Date d'inscription   Statut Membre Dernière intervention   4 178
     
    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
    1. prof-poisson Messages postés 72 Statut Membre 4
       
      If %combien% gtr 50 (
      echo trop sympa!!
      )
      0
      1. brucine Messages postés 24928 Date d'inscription   Statut Membre Dernière intervention   4 178 > prof-poisson Messages postés 72 Statut Membre
         
        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
      2. prof-poisson Messages postés 72 Statut Membre 4 > brucine Messages postés 24928 Date d'inscription   Statut Membre Dernière intervention  
         
        Merci beaucoup!
        0