Dans ce cours je vais vous apprendre à organiser votre programme pour qu'il soit un peu plus beau.
Pour demander à l'utilisateur de choisir entre plusieurs options, le plus simple est de faire ceci:
- Code:
-
@ECHO OFF
:QUESTION
CLS
SET CHOIX=0
ECHO. Touche Q : Quitter.
ECHO. Touche E : Bonjour.
SET /P CHOIX=Votre choix :
IF "%CHOIX%"=="q" GOTO :Quitter
IF "%CHOIX%"=="e" GOTO :Bonjour
GOTO QUESTION
:Quitter
EXIT
GOTO :EOF
:Bonjour
ECHO.Bonjour !
PAUSE
EXIT
GOTO :EOF
Ici, on utilise un SET /P ,pour communiquer avec l'utilisateur.
Mais ce systeme pose quelque problème, comme par exemple :
- L'utilisateur peut entrer n'importe quoi dans le SET /P.
- Par conséquent le programme doit être sécurisé.
- et en plus c'est pas super beau, comme interface.
C'est pourquoi, je vais vous apprendre à organiser un peu ces menus,
En premier je vais vous demandez de telecharger la commande : KEYX.exe
(le lien de telechargement est dans le cours N°14)
Ces menus fonctionnent à l'aide d'un curseur, qui va de haut en bas.
L'affichage des curseurs se fait à l'aide de variables, ayant chacune une position unique.
Par exemple : la variable CURSEURH1, contiendrait le curseur si il est à la position 1.
idem la variable CURSEURH2, contiendrait le curseur si il est à la position 2.
Le curseur possède une position unique, stocké dans POSHCURSEUR.
Ainsi on peut facilement afficher l'emplacement du curseur simplement en une seule commande :
- Code:
-
SET CURSEURH%POSHCURSEUR%=-
Exemple d'affichage :
- Code:
-
@ECHO OFF
SET "POSHCURSEUR=2"
SET "CURSEURH6= "
SET "CURSEURH5= "
SET "CURSEURH4= "
SET "CURSEURH3= "
SET "CURSEURH2= "
SET "CURSEURH1= "
SET CURSEURH%POSHCURSEUR%=-
CLS
ECHO. %CURSEURH1% Option 1.
ECHO. %CURSEURH2% Option 2.
ECHO. %CURSEURH3% Option 3.
ECHO. %CURSEURH4% Option 4.
ECHO. %CURSEURH5% Option 5.
ECHO. %CURSEURH6% Option 6.
PAUSE
Ceci n'est que l'affichage, pour avoir notre menu il faut bien-sûr pourvoir bouger ce curseur,
Et par conséquent, pouvoir modifier la position du curseur.
C'est ici que l'on va utiliser la commande KEYX.exe
Elle va nous permettre de communiquer avec l'utilisateur.
On l'a met dans une boucle,
- Code:
-
:BOUCLE
...
GOTO BOUCLE
Et on ajoute quelque condition pour incrémenter ou décrémenter la position du curseur,
de cette façon :
- Code:
-
KEYX.EXE
IF %ERRORLEVEL%==72 (
SET /A POSHCURSEUR-=1
)
IF %ERRORLEVEL%==80 (
SET /A POSHCURSEUR+=1
)
On place ceci dans le code précédent en ajoutant également la boucle :
- Code:
-
@ECHO OFF
REM Initialisation de toutes les variables du programme
SET "POSHCURSEUR=2"
SET "CURSEURH6= "
SET "CURSEURH5= "
SET "CURSEURH4= "
SET "CURSEURH3= "
SET "CURSEURH2= "
SET "CURSEURH1= "
:BOUCLE
SET CURSEURH%POSHCURSEUR%=-
CLS
ECHO. %CURSEURH1% Option 1.
ECHO. %CURSEURH2% Option 2.
ECHO. %CURSEURH3% Option 3.
ECHO. %CURSEURH4% Option 4.
ECHO. %CURSEURH5% Option 5.
ECHO. %CURSEURH6% Option 6.
KEYX.EXE
IF %ERRORLEVEL%==72 (
SET /A POSHCURSEUR-=1
)
IF %ERRORLEVEL%==80 (
SET /A POSHCURSEUR+=1
)
GOTO BOUCLE
Tester, on approche du résultat.
Il y a encore des détails, notamment : Le curseur ne s'efface pas (il laisse une trainer).
Il suffit d'effacer sa position avant de la modifier.
- Code:
-
@ECHO OFF
REM Initialisation de toutes les variables du programme
SET "POSHCURSEUR=2"
SET "CURSEURH6= "
SET "CURSEURH5= "
SET "CURSEURH4= "
SET "CURSEURH3= "
SET "CURSEURH2= "
SET "CURSEURH1= "
:BOUCLE
SET CURSEURH%POSHCURSEUR%=-
CLS
ECHO. %CURSEURH1% Option 1.
ECHO. %CURSEURH2% Option 2.
ECHO. %CURSEURH3% Option 3.
ECHO. %CURSEURH4% Option 4.
ECHO. %CURSEURH5% Option 5.
ECHO. %CURSEURH6% Option 6.
REM On efface son ancienne position :
SET "CURSEURH%POSHCURSEUR%= "
KEYX.EXE
IF %ERRORLEVEL%==72 (
SET /A POSHCURSEUR-=1
)
IF %ERRORLEVEL%==80 (
SET /A POSHCURSEUR+=1
)
GOTO BOUCLE
Le curseur monte et descend impeccable ! Mais il peut sortir de l'écran !
Sa position est simplement incrémenté ou décrémenté,
Rien ne l’empêche donc de devenir négative ou supérieur à la position maximal.
Pour cela, encore quelque condition à ajouter :
• Si on arrive tout en haut (POSHCURSEUR==1) : Il ne faut pas autoriser le déplacement vers le haut.
• Si on est tout en bas (POSHCURSEUR==6) : Il ne faut pas autoriser le déplacement vers le bas
il ne faut pas autorisé le déplacement.
- Code:
-
@ECHO OFF
REM Initialisation de toutes les variables du programme
SET "POSHCURSEUR=2"
SET "CURSEURH6= "
SET "CURSEURH5= "
SET "CURSEURH4= "
SET "CURSEURH3= "
SET "CURSEURH2= "
SET "CURSEURH1= "
:BOUCLE
SET CURSEURH%POSHCURSEUR%=-
CLS
ECHO. %CURSEURH1% Option 1.
ECHO. %CURSEURH2% Option 2.
ECHO. %CURSEURH3% Option 3.
ECHO. %CURSEURH4% Option 4.
ECHO. %CURSEURH5% Option 5.
ECHO. %CURSEURH6% Option 6.
REM On efface son ancienne position :
SET "CURSEURH%POSHCURSEUR%= "
KEYX.EXE
IF %ERRORLEVEL%==72 (
REM Si le curseur est au dessus de 1.
IF %POSHCURSEUR% GTR 1 (
SET /A POSHCURSEUR-=1
)
)
IF %ERRORLEVEL%==80 (
REM Si le curseur est en dessous de 6.
IF %POSHCURSEUR% LSS 6 (
SET /A POSHCURSEUR+=1
)
)
GOTO BOUCLE
Bon, maintenant le curseur fonctionne, on va mettre au point maintenant la touche de validation.
Cette touche, est la touche entrée, on va devoir ajouter quelques conditions :
- Code:
-
IF %ERRORLEVEL%==13 (
REM Si on appuie sur la touche ENTRER
REM On teste toutes les positions possible du curseur
IF %POSHCURSEUR%==1 (
GOTO OPTION1
)
IF %POSHCURSEUR%==2 (
GOTO OPTION2
)
IF %POSHCURSEUR%==3 (
GOTO OPTION3
)
...
)
Je vous donne un exemple correct (avec de vrai choix)
Voici un programme avec un menu, capable de créer des fichiers et des dossiers,
- Code:
-
@ECHO OFF
REM Initialisation de toutes les variables du programme
SET "POSHCURSEUR=1"
SET "CURSEURH5= "
SET "CURSEURH4= "
SET "CURSEURH3= "
SET "CURSEURH2= "
SET "CURSEURH1= "
SET "PASDECURSEUR= "
SET "CURSEUR=-"
:BOUCLE
SET CURSEURH%POSHCURSEUR%=%CURSEUR%
CLS
ECHO. %CURSEURH1% Creer un fichier.
ECHO. %CURSEURH2% Creer un dossier.
ECHO. %CURSEURH3% Creer un fichier texte (+ son contenu).
ECHO. %CURSEURH4% Ouvrir la calculette.
ECHO. %CURSEURH5% Quitter ce programme.
REM On efface son ancienne position :
SET "CURSEURH%POSHCURSEUR%=%PASDECURSEUR%"
KEYX.EXE
IF %ERRORLEVEL%==72 (
REM Si le curseur est au dessus de 1.
IF %POSHCURSEUR% GTR 1 (
SET /A POSHCURSEUR-=1
)
)
IF %ERRORLEVEL%==80 (
REM Si le curseur est en dessous de 6.
IF %POSHCURSEUR% LSS 5 (
SET /A POSHCURSEUR+=1
)
)
IF %ERRORLEVEL%==13 (
REM Si on appuie sur la touche ENTRER
REM On teste toute les positions possible du curseur
IF %POSHCURSEUR%==1 (
CALL :CREERFICHIER
)
IF %POSHCURSEUR%==2 (
CALL :CREERDOSSIER
)
IF %POSHCURSEUR%==3 (
CALL :CREERFICHIERTEXTE
)
IF %POSHCURSEUR%==4 (
START CALC
)
IF %POSHCURSEUR%==5 (
GOTO QUITTERCEPROGRAMME
)
)
GOTO BOUCLE
:CREERFICHIER
SET "NOMDUFICHIER="
SET "EXTDUFICHIER=txt"
REM On demande le nom du fichier à l'utilisateur :
SET /P NOMDUFICHIER= Nom de votre fichier :
REM On demande le nom de son extension à l'utilisateur :
SET /P EXTDUFICHIER= Extension :
REM Création du fichier :
ECHO.>%NOMDUFICHIER%.%EXTDUFICHIER%
REM On utilise une simple commande ECHO pour créer dans un fichier
REM On enregistre le flux de sortie de cette commande dans un fichier (Voir cours N
GOTO :EOF
:CREERDOSSIER
SET "NOMDUDOSSIER="
REM On demande le nom du nouveau dossier à l'utilisateur :
SET /P NOMDUDOSSIER= Nom de votre nouveau dossier :
REM Création du dossier :
REM MKDIR est une commande qui permet de créer un dossier (simple d'utilisation comme vous pouver le voir):
MKDIR %NOMDUDOSSIER%
GOTO :EOF
:CREERFICHIERTEXTE
SET "NOMDUFICHIER="
SET "CONTENUDUFICHIER="
REM On demande le nom du fichier à l'utilisateur :
SET /P NOMDUFICHIER= Nom de votre fichier :
REM On demande le contenu de ce fichier à l'utilisateur :
SET /P CONTENUDUFICHIER= Contenu de ce fichier :
REM Création du fichier :
ECHO.%CONTENUDUFICHIER%>>%NOMDUFICHIER%.txt
GOTO :EOF
:QUITTERCEPROGRAMME
EXIT