Probleme avec mon batch

Fermé
FRED92G - 4 févr. 2013 à 13:49
dg_belmontet Messages postés 313 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 8 juin 2016 - 5 févr. 2013 à 10:19
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

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
4 févr. 2013 à 14:46
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
FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022 4
Modifié par FRED92G le 4/02/2013 à 15:25
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
4 févr. 2013 à 15:28
il faut faire un test pour qu'il exécute réponse 1 ou 2, voir help IF
0
FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022 4
4 févr. 2013 à 15:49
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
dg_belmontet Messages postés 313 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 8 juin 2016 127
4 févr. 2013 à 17:53
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
FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022 4
Modifié par FRED92G le 4/02/2013 à 18:05
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
dg_belmontet Messages postés 313 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 8 juin 2016 127
4 févr. 2013 à 18:52
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022 4
4 févr. 2013 à 19:16
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
FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022 4
Modifié par FRED92G le 4/02/2013 à 19:56
@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
FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022 4
Modifié par FRED92G le 4/02/2013 à 20:22
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
dg_belmontet Messages postés 313 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 8 juin 2016 127
4 févr. 2013 à 20:30
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
FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022 4
4 févr. 2013 à 22:41
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
dg_belmontet Messages postés 313 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 8 juin 2016 127
4 févr. 2013 à 23:10
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
FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022 4
4 févr. 2013 à 23:26
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
FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022 4
4 févr. 2013 à 23:28
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
dg_belmontet Messages postés 313 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 8 juin 2016 127
4 févr. 2013 à 23:52
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
FRED92G Messages postés 290 Date d'inscription jeudi 24 mai 2012 Statut Membre Dernière intervention 20 août 2022 4
4 févr. 2013 à 23:56
MERCI CETTE FOIT CI IL EST BON
0
dg_belmontet Messages postés 313 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 8 juin 2016 127
5 févr. 2013 à 10:19
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