Probleme avec mon batch

FRED92G -  
dg_belmontet Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   -
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. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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
  2. FRED92G Messages postés 417 Statut Membre 4
     
    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. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      il faut faire un test pour qu'il exécute réponse 1 ou 2, voir help IF
      0
    2. FRED92G Messages postés 417 Statut Membre 4
       
      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
  3. dg_belmontet Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   128
     
    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
  4. FRED92G Messages postés 417 Statut Membre 4
     
    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. dg_belmontet Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   128
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. FRED92G Messages postés 417 Statut Membre 4
     
    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
  7. FRED92G Messages postés 417 Statut Membre 4
     
    @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
  8. FRED92G Messages postés 417 Statut Membre 4
     
    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
  9. dg_belmontet Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   128
     
    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
  10. FRED92G Messages postés 417 Statut Membre 4
     
    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
  11. dg_belmontet Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   128
     
    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
  12. FRED92G Messages postés 417 Statut Membre 4
     
    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
  13. FRED92G Messages postés 417 Statut Membre 4
     
    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
  14. dg_belmontet Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   128
     
    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
  15. FRED92G Messages postés 417 Statut Membre 4
     
    MERCI CETTE FOIT CI IL EST BON
    0
  16. dg_belmontet Messages postés 320 Date d'inscription   Statut Membre Dernière intervention   128
     
    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