Menu (batch)

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Objectif Menu interactif en batch
Techniques findstr, set /p, call
Voir aussi Batch · Routines (batch)

Cette page présente un modèle de menu interactif en batch. Le script construit dynamiquement la liste des choix en cherchant, dans son propre fichier (%~f0), les étiquettes commençant par :menu_ à l'aide de findstr. La saisie de l'utilisateur (set /p) déclenche l'appel (call) de la sous-routine correspondante.

Code

::-----------------------------------------------------------
:: Exemple de menu en batch
::-----------------------------------------------------------
@ECHO OFF
REM.-- Prepare the Command Processor
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

:menuLOOP
cls
echo.
echo.==================================
echo.              MENU
echo.==================================
echo.
for /f "tokens=1,2,* delims=_ " %%A in ('"findstr /b /c:":menu_" "%~f0""') do echo.  %%B  %%C
set choice=
echo.&set /p choice=Make a choice or hit ENTER to quit: ||GOTO:EOF
echo.&call:menu_%choice%
GOTO:menuLOOP

::-----------------------------------------------------------
:: fonctions du menu
::-----------------------------------------------------------

:menu_1   choix 1
echo.Choix 1
GOTO:EOF

:menu_2   choix 2
echo.Choix 2
GOTO:EOF

:menu_

::-----------------------------------------------------------
:: affiche l'aide : toutes les lignes commençant par ::h~
:: on peut changer pour avoir plusieurs aides
::-----------------------------------------------------------
:menu_h   help
for /f "tokens=1,* delims=~ " %%A in ('"findstr /b /c:"::h" "%~f0""') do echo.%%B

GOTO:EOF

:menu_C   Clear Screen
cls
GOTO:EOF

::--------------------------------------
::h~ mon aide
::h~ usage et autre
::--------------------------------------

Voir aussi