[BATCH] Donner ue seule réponse valable

Fermé
Greg6614 - 6 août 2009 à 19:18
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 - 7 août 2009 à 15:06
Bonjour, à toutes te à tous.
je voudrait savoir s'il est possible de poser une question avec un seule réponse possible et que quand cette réponse est fausses un message par exemple echo lui disent réponse fausse est-ce possible ?
Merci d'avance

12 réponses

bonjour,

Tu veux faire un programme intéractif avec un batch, ou bien tu veux contrôler un argument du batch ?
C'est bien un .bat que tu veux écrire ?
Excuses moi, mais il me paraît nécessaire que tu précise un peu plus ton objectif !
Parce qu'en plus, un batch est un fichier texte lisible par tout le monde, donc la réponse ne sera pas difficile à deviner !
0
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 164
6 août 2009 à 20:47
Bas tu peut faire un truc comme sa:

@echo off
echo Quelle est l'extension des fichiers batchs ?
echo 1 : ".bat"
echo 2 : ".batch"
echo 3 : ".dos"
echo 4 : ".ms-dos"
set /p rep=Votre reponse (chiffre) :
if %rep% NEQ "1" echo RÉPONSE FAUSSE



Bilou.
0
Merci pour vos réponses,
c'est vrai je vais préciser un peu plus.
je voudrait faire un .bat pour faire apprendre l'espagnole a ma mère et approfondir mes bases en programmations.
Dedans je voudrait poser des questions avec "set /p question=Votre question" pas de problème, les réponses avec if pas de problème non plus , mais là ou je bloque c'est par exemple quand on met un mdp sur un bat on indique au bat le bon mdp et s'il est faux il ferme, et pour éviter de fermer je voudrais que lorsque ma mère entre une mauvaise réponse le bat lui disent réponse fausse au lieu de quitter.
Voilà j'espère avoir étais assez clair pour vous et merci d'avance pour pour vos réponses et je ne sais pas si ce qu'a écrit cs-bilou correspond a ce que je cherche parce que je ne comprend pas pourquoi les commandes

echo 1 : ".bat"
echo 2 : ".batch"
echo 3 : ".dos"
echo 4 : ".ms-dos"
Voilà merci cs-bilou et java4ever de m'avoir déjà répondu et merci d'avance aux autes qui pourront m'aider.
bye
0
Autant pour moi je viens de comprendre le code de cs-bilou, j'essaie et je vous tiens au courant.
0

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

Posez votre question
Voilà désolé je sais je ne suis pas assez explicite de ce que je vaut faire donc je voudraitr faire ce que j'ai marquer plus haut mais quand on lui dit réponses fausses je voudrait qu'il retourne a la question et l'orsque la réponses est juste il enchaines les autres questions.
voilà merki
0
On peut arriver faire ce que tu veux, mais ça va être lourd .
Pourquoi n'utilise tu pas un vrai langage de programmation comme java ou C++, ou à la rigueur, si tu veux quelque chose de light en mode interprété, utilise VBScrip ou javascript qui sont inclus dans windows (depuis windows 98 au moins)

En plus la documentation des batch est moins accessible que par exemple java.
Va voir le site du zero pour des cours d'nitiation.
Sinon, comme ça tu comprends mieux ?
@echo off
:Question01
echo Comment dit-on jaune en espagnol ?
echo 1 : "rojo"
echo 2 : "verde"
echo 3 : "amarillo"
echo 4 : "azul"
set /p rep=Votre reponse (chiffre) :
if %rep% NEQ 3 echo RÉPONSE FAUSSE & goto Question01
:Question02
echo Comment dit-on chercher en espagnol ?
echo 1 : pedir
echo 2 : buscar
set /p rep=Votre reponse (chiffre) :
if %rep% NEQ 2 echo RÉPONSE FAUSSE & goto Question02
echo etc...
0
Merci beaucoup grâce a vous j'ai réussi en modifiant un petit peu ton code:
voici le code que j'ai mis:
@echo off
:Question01
echo Comment dit-on jaune en espagnol ?
echo 1 : "rojo"
echo 2 : "verde"
echo 3 : "amarillo"
echo 4 : "azul"
set /p rep=Votre reponse (chiffre) :
if %rep%==1 echo REPONSE FAUSSE & goto Question01
if %rep%==2 echo REPONSE FAUSSE & goto Question01
if %rep%==4 echo REPONSE FAUSSE & goto Question01
if %rep%==3 echo BONNE REPONSE
:Question02
echo Comment dit-on chercher en espagnol ?
echo 1 : pedir
echo 2 : buscar
set /p rep=Votre reponse (chiffre) :
if %rep%==2 REPONSE FAUSSE & goto Question01
if %rep%==1 BONNE REPONSE

etc en enchainant les question!

MERCI bye greg
0
Excuses moi greg6614, mais tu fais ce qu'on apelle de la redondance !

Ton code fait la même chose que le mien, mais tu fais 4 tests par question alors qu'un seul suffit, comme te l'avais d'ailleurs donné cs-bilou
Le mot NEQ veut dire not EQUAL, donc, si il n'y a qu'une réponse vraie à chaque question, il suffit de faire le test comme ça avec un seul if , et de rajouter, si tu veux le message de bonne réponse :
if %rep% NEQ 3 echo RÉPONSE FAUSSE & goto Question01
echo BONNE REPONSE (%rep%)

OK ?
0
Ha oui effectivement sa va plus vite merci beaucoup =)
0
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 164
7 août 2009 à 00:40
Tien voilà un questionnaire que j'avais fait dans mes début:

@echo off
title Questionnaire
set note=5

:question1
 cls
 color 0F
 echo.
 ECHO ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
 echo ºQuestion 1 : Quelle est l'extension des fichiers batch ?º
 ECHO ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
 echo 1 : ".bat"
 echo 2 : ".batch"
 echo 3 : ".dos"
 echo 4 : ".ms-dos"


set /p REP1=Votre reponse (chiffre) :
if "%REP1%"=="1" (goto rep_bon) else goto rep_fausse


:question2
 cls
 color 0F
 echo.
 ECHO ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
 echo ºQuestion 2 : Quel est la commande pour supprimer un fichier ?º
 ECHO ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
 echo 1 : "ECHO"
 echo 2 : "CD"
 echo 3 : "DEL"
 echo 4 : "DIR"
 ECHO ****************

set /p REP2=Votre reponse (chiffre) :
if "%REP2%"=="3" (goto rep_bon) else goto rep_fausse


:question3
 cls
 color 0F
 echo.
 ECHO ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
 echo ºQuestion 3 : Quel est la commande pour changer le volume audio ?º
 ECHO ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
 echo 1 : "MODE"
 echo 2 : "VOL"
 echo 3 : "RD"
 echo 4 : "On peut pas"


set /p REP3=Votre reponse (chiffre) :
if "%REP3%"=="4" (goto rep_bon) else goto rep_fausse



:question4
 cls
 color 0F
 echo.
 ECHO ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
 echo ºQuestion 4 : Quel est la commande pour afficher le contenue d'un dossier ?º
 ECHO ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
 echo 1 : "ECHO"
 echo 2 : "DIR"
 echo 3 : "CMD"
 echo 4 : "CLS"


set /p REP4=Votre reponse (chiffre) :
if "%REP4%"=="2" (goto rep_bon) else goto rep_fausse



:question5
 cls
 color 0F
 echo.
 ECHO ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
 echo ºQuestion 5 : Quel est la commande pour deplacer des fichier ?º
 ECHO ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
 echo 1 : "COPY"
 echo 2 : "MODE"
 echo 3 : "MOVE"
 echo 4 : "DEPLACE"


set /p REP5=Votre reponse (chiffre) :
if "%REP5%"=="3" (goto rep_bon) else goto rep_fausse




:rep_bon
cls
color 02
echo BRAVO, c'est la bonne reponse !!!
echo Question Suivante.
pause
if "%REP1%"=="1" (set REP1=0& goto question2)

if "%REP2%"=="3" (set REP2=0& goto question3)

if "%REP3%"=="4" (set REP3=0& goto question4)

if "%REP4%"=="2" (set REP4=0& goto question5)

if "%REP5%"=="3" (set REP5=0& goto score)

:rep_fausse
cls
color 0C
echo Non c'est pas sa !!
set /a note-=1
pause
if not "%REP1%"=="0" goto question1
if not "%REP2%"=="0" goto question2
if not "%REP3%"=="0" goto question3
if not "%REP4%"=="0" goto question4
if not "%REP5%"=="0" goto question5


:score
cls
color 0E
echo Ton score est de %note%/5
pause


Regarde le bien réfléchie et demande si tu comprend pas.

Bilou.
0
Merci beaucoup cs-bilou ikl est génial ton code et merci aussi java4ever pour ses explications.
MERCI ENCORE
bye greg
0
cs-bilou Messages postés 769 Date d'inscription dimanche 2 décembre 2007 Statut Membre Dernière intervention 24 février 2011 164
7 août 2009 à 15:06
Aucun problème si tu a problème post.
Je serais pour te filé un coup de main.

Bilou
0