Probleme avec mon batch

Bonjour,

j ai un souci avec mon batch surement un problème de variable je pence vue qu il me donne toujours les 2 réponse sauf que j aimerai que selon l age donner il me donne que une ou l autre mes pas les 2 a la foi.

ps: je vous joint mon code

@echo off
set /P Nom="Comment t'appelles-tu ? "
echo Bonjour %Nom%
set /p Age="Quel age as-tu ? "
set /a reste=65-Age

:: reponse 1
echo Encore %reste% ans de turbin avant la retraite!

set /a retraite= 0--Age

:: reponse 2
echo vous avez %retraite% ans vous etre deja a la retraite.

ping -n 30 localhost >nul

15 réponses

  1. Contributeur
    hello
    utiliser des % pour avoir le contenu de la variable et pas d'espaces après =
    set /a reste=65-%Age%
    ...
    set /a retraite=0--%Age%
    
    0
    1. sa ne change rien il me donne toujour les 2 reponse ensemble que je voudrai qu il me donne que celle approprie.

      si la personne a plus de 65 ans il doit me dir quel et a la retraite.

      et non me dire avec qu il lui reste - quel que chose de boulot.

      et si la personne a moin que les 65 ans il doit me dire juste le nombre d année quel a encore a faire encore avent la retrait.

      et non me dire quel a tel age et que et a la retraite vue que c est pas le cas.

      J'ai corrigé le code comme ceci il me manque plus que à trouver comment faire pour qu' il choisit la réponse correcte

      @echo off
      set /P Nom="Comment t'appelles-tu ? "
      echo Bonjour %Nom%
      set /p Age="Quel age as-tu ? "
      set /a reste=65-Age
      
      :: reponse 1
      echo Encore %reste% ans de turbin avant la retraite!
      
      :: reponse 2
      echo vous avez %Age% ans vous etre deja a la retraite.
      
      ping -n 30 localhost >nul
      0
      1. Contributeur
        il faut faire un test pour qu'il exécute réponse 1 ou 2, voir help IF
        0
      2. je croie que je vais abandonner le prof de mon cousin se fera le plaisir de sortir son stylo rouge et e mettre le zéro et dire qu il y a quel que année j ai eu le même prof et le même exercice et que je me rappel plus de la solution je croie que cette foi si on va devoir me la donnée toute faite pour que je la comprenne la chose.

        si tu veux bien te pencher dessus sa serai bien.

        merci
        0
    2. Bonsoir,

      Essayez ceci :
      @echo off
      set /P Nom="Comment t'appelles-tu ? "
      echo Bonjour %Nom%
      set /p Age="Quel age as-tu ? "
      set /a reste=65-%Age%

      if %reste% gtr 0 echo Encore %reste% ans de turbin avant la retraite!
      if %reste% LEQ 0 echo Vous avez %age% ans et vous etes deja a la retraite....
      echo.
      echo.

      ping -n 30 localhost >nul

      Le Wait (avec le ping) fait un peu bidouille... regardez si vous n'avez pas sur le micro l'exécutable Timeout.exe (si oui faire timeout /? pour le help).

      Cordialement
      0
      1. SA FONCTIONNE MES J AURAI BESOIN DE PLUS D EXPLICATION SUR LA FONCTION DES IF ET LES ECHO QUI SUIVE

        if %reste% gtr 0 echo
        if %reste% LEQ 0 echo

        echo.
        echo.

        LE PING JE LES CHOISI POUR UNE HISTOIRE D ETRE SUR QUE LA POSE SOIT FAIT PAR LES VIEUX SYSTEM AU BAHU DE MON TEMPS ON TOURNER SUR DU WINDOWS 2000 DEPUIS IL SON PASSER A XP IL MA DIT MES XP GÈRE T IL LE TIMEOUT TEL ET LA QUESTION.
        0
        1. La variable "reste" étant renseignée par l'utilisateur dans la question (65 - la saisie), dans la 1ère ligne (if %reste% gtr 0 .....) on teste si le résultat est plus grand que 0 (ceci indique qu'on a saisi une valeur inférieure à 65) donc echo il faut encore travailler.....
          Dans la 2ème ligne (if %reste% LEQ 0 ....) on teste si le résultat est égal ou inférieur à 0 ceci indique que l'on a saisi 65 ou plus de 65 et on envoie l'echo pour dire que l'on est à la retraite.

          Dans votre code initial, la variable %retraite% n'a pas lieu dêtre pour ce que vous voulez faire.

          Pour l'histoire du Wait, effectivement cela dépendra de la version du système mais il est aussi possible que le Ping.exe ne soit pas sur tous les postes... Pour ma part j'ai un Windows 7 et j'ai Timeout.exe (voir si sous Win2000, il n'y a pas Wait.exe).

          Pour la commande "set", il suffit de saisir set /? pour avoir l'aide. Ne pas oublier, quand on fait des calculs sur des variables et qu'il y en a une de renseignée, la syntaxe est : %variable% et dans le code il ne faut pas mettre d'espace derrière le signe égal (vous avez eu de la chance car ceci fonctionne mais ce n'est pas une habitude à prendre....) :
          set /p Age="Quel age as-tu ? "
          set /a reste=65-Age.

          Voilà

          Cdlt
          0
      2. MERCI VOILA UNE COMPLICATION DE PLUS DE L ENONCER UN OUBLIE DU PROF IL DEMANDE DE FAIRE LE RAJOUT DE LA LIGNE POUR LES ANNÉE SUPPLÉMENTAIRE A BOSSER

        VOILA SE QUE J AI RAJOUTER

        set /P suplementaire="avez vous des annees a ratraper ? "
        set /a ajustement=reste+suplementaire

        MES EN IF

        J AI MIE SA

        if %reste% gtr 0 echo Vous avez %ajustement%Encore ans de turbin avant la retraite!

        LE PROBLEME ET QUE MA IF RENTRE EN CONFLIE AVEC LA IF QUI DIT COMBIEN D ANNE IL RESTA A BOSSER AVENT LES ANNEE SUPPLÉMENTAIRE IL FAUDRAIT QUE MA IF SOI ELLE MÊME ASSOCIER A L AJUSTEMENT DE FAÇON QUEL S AFFICHE PAS AVEC LA IF SANS L AJUSTEMENT
        0
        1. @echo off
          set /P Nom="Comment t'appelles-tu ? "
          echo Bonjour %Nom%
          set /p Age="Quel age as-tu ? "
          set /a reste=65-Age
          set /P suplementaire="avez vous des annees a rattraper ? "
          set /a ajustement=reste+suplementaire

          if %reste% gtr 0 echo Encore %reste% ans de turbin avant la retraite!
          if %reste% LEQ 0 echo Vous avez %age% ans et vous etes deja a la retraite....
          if %ajustement% gtr 0 echo Vous avez encore %ajustement% ans de turbin après ajustement des annees à rattraper avant la retraite!

          ping -n 30 localhost >nul
          0
          1. VOILA MA DERNIERE VERSION JE PENCE QUE DES MODIFICATION SON A FAIRE SI QUEL QU UN PEU ME DIRE MERCI

            @echo off
            set /P Nom="Comment t'appelles-tu ? "
            echo Bonjour %Nom%
            set /p Age="Quel age as-tu ? "
            set /a reste=65-Age
            set /P suplementaire="avez vous des annees a rattraper ? "
            set /a ajustement=reste+suplementaire
            set /a departage=reste+suplementaire+Age

            if %reste% gtr 0 echo Encore %reste% ans de turbin avant la retraite!
            if %age% LEQ 0 echo Vous avez %age% ans et vous etes deja a la retraite....
            if %ajustement% gtr 0 echo Vous avez encore %ajustement% ans de turbin apres ajustement des annees a rattraper avant la retraite!
            if %departage% gtr 0 echo Vous partirez a %departage% ans.

            ping -n 30 localhost >nul
            0
            1. Re,
              c'est sans fin...

              Voici une ébauche de code en cas d'années à rattraper mais si on répond 65 et au-dessus il n'y a pas d'années à rattraper....

              @echo off
              echo.
              set /P Nom="Comment t'appelles-tu ? "
              echo.
              echo Bonjour %Nom%
              echo.
              set /p Age="Quel age as-tu ? "
              set /a reste=65-%Age%

              if %reste% LEQ 0 goto :affiche

              set /p choix="avez vous des annees a rattraper (O/N) ?"
              if /I %choix% NEQ o goto :affiche
              set /P sup_ans="Combien d'annees a rattraper ?"
              set /a reste=%sup_ans%+%reste%

              :affiche
              echo.
              if %reste% gtr 0 echo Encore %reste% ans de turbin avant la retraite!
              if %reste% LEQ 0 echo Vous avez %age% ans et vous etes deja a la retraite....

              ping -n 30 localhost >nul

              exit
              0
              1. LA IL EST PRESQUE BON IL FAUDRAI JUSTE QU IL DISE A QUEL AGE PARTIRA LA PERSONNE APRES LES CALCULES SI ELLE A DES ANNEE EN PLUS ELLE PARTIRA PAS A 65 MES BIEN PLUS
                0
                1. Cette fois-ci il n'y a plus de condition s'il a atteint 65 et plus et s'il a des années à rattraper:

                  @echo off
                  echo.
                  set /P Nom="Comment t'appelles-tu ? "
                  echo.
                  echo Bonjour "%Nom%"
                  echo.
                  set /p Age="Quel age as-tu ? "
                  set /a reste=65-%Age%

                  echo.
                  set /p choix="Avez vous des annees a rattraper (O/N) ?"
                  if /I %choix% NEQ o goto :affiche
                  set /P sup_ans="Combien d'annees a rattraper ?"
                  if %reste% gtr 0 set /a reste=%sup_ans%+%reste%
                  if %reste% LEQ 0 set /a reste=%sup_ans%

                  :affiche
                  echo.
                  if %reste% gtr 0 echo Vous avez %age% ans et il vous reste encore %reste% ans de turbin avant la retraite!
                  if %reste% LEQ 0 echo Vous avez %age% ans et vous etes deja a la retraite....

                  ping -n 30 localhost >nul

                  exit

                  Autre chose: Attention à l'orthographe si tu veux avoir une note correcte....
                  0
                  1. C EST PAS POUR MOI C EST POUR LE COUSIN SI IL Y A DES FOTE IL CORRIGERA AVENT MOI JE FAIT AU MIEUX ET JE L AVENCE VUE QUE LE PROF JE LE CONNAI SUR LA PREMIER PARTI CEST BON ET ON MEME FAIT LA 2 EME PARTI POUR LA SEMAINE D APRES CETTE EXERCICE DE MERDE JE LE CONNAI JE LES EU AUSSI IL Y A DEJA 10 ANS
                    0
                    1. PAR CONTRE IL MANQUE LA PHRASE QUI DIT VOUS PARTIREZ A TEL AGE A LA RETRAITE

                      POUR MOI 65 PLUS 2 ANS DE RATTRAPAGE SA FAIT 67

                      DONC IL DEVRAI DIRE VOUS PARTIREZ A 67 A LA RETRAITE
                      0
                      1. Cette fois-ci c'est la dernière....

                        @echo off
                        echo.
                        set /P Nom="Comment t'appelles-tu ? "
                        echo.
                        echo Bonjour "%Nom%"
                        echo.
                        set /p Age="Quel age as-tu ? "
                        set /a reste=65-%Age%

                        echo.
                        set /p choix="Avez vous des annees a rattraper (O/N) ?"
                        if /I %choix% NEQ o goto :affiche
                        set /P sup_ans="Combien d'annees a rattraper ?"
                        if %reste% gtr 0 set /a reste=%sup_ans%+%reste%
                        if %reste% LEQ 0 set /a reste=%sup_ans%
                        set /a retraite=%age%+%reste%

                        :affiche
                        echo.
                        if %reste% gtr 0 echo Vous avez %age% ans, il vous reste encore %reste% ans de turbin avant la retraite, vous partirez donc a %retraite% ans !
                        if %reste% LEQ 0 echo Vous avez %age% ans et vous etes deja a la retraite....

                        ping -n 30 localhost >nul

                        exit
                        0
                        1. Bonjour,

                          Dernier petit rectificatif (remontée d'une ligne pour l'étiquette ":affiche") car la variable %retraite% ne serait pas renseignée s'il n'y a pas d'années à rattraper:

                          @echo off
                          echo.
                          set /P Nom="Comment t'appelles-tu ? "
                          echo.
                          echo Bonjour "%Nom%"
                          echo.
                          set /p Age="Quel age as-tu ? "
                          set /a reste=65-%Age%

                          echo.
                          set /p choix="Avez vous des annees a rattraper (O/N) ?"
                          if /I %choix% NEQ o goto :affiche
                          set /P sup_ans="Combien d'annees a rattraper ?"
                          if %reste% gtr 0 set /a reste=%sup_ans%+%reste%
                          if %reste% LEQ 0 set /a reste=%sup_ans%

                          :affiche
                          set /a retraite=%age%+%reste%
                          echo.
                          if %reste% gtr 0 echo Vous avez %age% ans, il vous reste encore %reste% ans de turbin avant la retraite, vous partirez donc a %retraite% ans !
                          if %reste% LEQ 0 echo Vous avez %age% ans et vous etes deja a la retraite....

                          ping -n 30 localhost >nul

                          exit

                          Ne pas oublier de mettre en "résolu" ce sujet.

                          Cdlt.
                          0