MS Dos Le DOS sied

Gestion de menus avec des fichiers de commandes

Un menu pour faire quoi ?

Mais à quoi cela peut-il bien servir ? Il est vrai que tout le monde n'a pas ce problème à résoudre mais cette technique peut se révéler utile lorsque l'on désire se servir alternativement de Windows et de programmes ne s'exécutant qu'en DOS natif comme certains jeux ou des applications écrites par des radio-amateurs.

Pour rendre ce propos concret, un exemple va être décrit pas à pas.

Au démarrage de l'ordinateur Windows ne sera pas lancé automatiquement et un menu proposera un choix entre 3 options :
   - le célèbre jeu Gratte moi la puce que j'ai dans l'DOS qui n'a jamais hélas été réédité pour Windows 9x ;
   - exécution de Virvirus, le non moins célèbre anti-virus à utiliser sous DOS ;
   - lancement de Windows.

Et en prime, ce sera en couleur.

Empêcher le démarrage de Windows

Ce décor étant planté, la première étape consiste à modifier le fichier msdos.sys afin que le démarrage s'arrête avant le chargement de Windows. Il suffit d'ajouter la ligne :

bootgui=0

Ce fichier est souvent protégé en écriture et il faudra sans doute auparavant modifier ses attributs en décochant les options Lecture seule et Fichier caché.

Propriétés msdos.sys

Voir la vie en couleurs

Pour amener un peu de couleur il va falloir se servir des séquences d'échappement ANSI et donc ajouter la ligne correspondant à ce gestionnaire dans le fichier config.sys :

devicehigh=ansi.sys

Ces séquences sont des commandes placées dans le flot du texte à afficher qui permettent d'en modifier l'apparence, notamment la couleur des caractères et celle du fond.

Utiliser de préférence edit

Si la création de ce menu peut se faire avec le bloc-notes, il est préférable pour la suite d'utiliser l'éditeur de texte du DOS en se servant de la commande edit. Ce conseil peut d'ailleurs être prodigué d'une manière plus générale : pour toutes les actions sur des fichiers propres au DOS, utiliser edit.

Si le menu doit afficher des caractères munis de signes diacritiques (accents, cédille, tréma) seul edit permettra de les saisir facilement. Il en va de même pour les séquences d'échappement mentionnées ci-dessus.

Elles sont annoncées par le caractère échappement (code 027) suivi du crochet ouvrant. L'éditeur de texte du DOS offre une facilité pour entrer le caractère échappement directement au clavier : utiliser la combinaison de touches Ctrl + P puis appuyer sur la touche échap. Il apparaît ensuite sous la forme d'une petite flèche orientée vers la gauche. Ici il sera matérialisé par le tilde.

Le fichier

Le menu proprement dit est réalisé à l'aide de commandes echo placées dans un fichier de commandes .

Voici le contenu de ce fichier :

@echo off
cls
set coul=~[46;30m
set dflt=~[0m
echo.
echo.
set ligv=          %coul%
set ligv=%ligv%                                                            %dflt%
echo %ligv%
set lign=          %coul%                            MENU
set lign=%lign%                            %dflt%
echo %lign%
echo %ligv%
echo %ligv%
set lign=          %coul%   1 - Gratte moi la puce que j'ai
set lign=%lign% dans l'DOS               %dflt%
echo %lign%
echo %ligv%
set lign=          %coul%   2 - Virvirus
set lign=%lign%                                             %dflt%
echo %lign%
echo %ligv%
set lign=          %coul%   3 - Windows
set lign=%lign%                                              %dflt%
echo %lign%
echo %ligv%
echo %ligv%
echo %ligv%
echo %ligv%
set lign=          %coul%Entrez le n° de l'option choisie ou une
set lign=%lign% commande DOS     %dflt%
echo %lign%
echo %ligv%
set coul=
set dflt=
set ligv=
set lign=
echo.
echo.

Analyse ligne à ligne

Les deux premières lignes, annulation de l'écho des commandes et effacement de l'écran ne méritent aucun commentaire. La suite réclame des explications détaillées :

set coul=~[46;30m
set dflt=~[0m

On voit apparaître ici les deux séquences d'échappement qui vont être utilisées. La première indique que le texte sera en caractères noirs sur fond cyan. L'autre est le retour au défaut, caractères blancs sur fond noir. Pour faciliter la lecture du programme, elles sont attribuées à deux variables d'environnement au nom significatif qui, intercalées dans le texte à afficher, vont servir d'attributs.

echo.
echo.

Deux lignes vierges pour la mise en page du menu.

set ligv=          %coul%
set ligv=%ligv%                                                            %dflt%

On définit ici une nouvelle variable d'environnement contenant une ligne vide du menu. Le nombre d'espaces insérés permet d'obtenir une ligne de 60 caractères avec une marge de 10. L'attribut coul lui donne la couleur cyan. L'attribut dflt remet les 10 derniers caractères de la ligne (10 + 60 + 10 = 80) en fond noir afin de créer une marge droite.

echo %ligv%

On affiche cette ligne qui sera donc la première du menu.

set lign=          %coul%                            MENU
set lign=%lign%                            %dflt%

On définit maintenant une ligne courante qui comporte le titre à faire apparaître : menu. Les espaces sont insérés de manière à ce que cette ligne soit alignée avec la précédente et que le titre soit centré. Grâce à l'attribut coul, MENU sera affiché en noir sur le fond cyan.

echo %lign%
echo %ligv%
echo %ligv%

On affiche cette ligne de texte suivie de deux lignes vides puis on recommence le processus pour chacune des lignes du menu jusqu'à le clore par une ligne vide.

set coul=
set dflt=
set ligv=
set lign=
echo.
echo.

Les variables d'environnement peuvent maintenant être supprimées et deux lignes vierges sont insérées pour que le menu se détache de la suite de l'affichage.

Il ne reste plus qu'à enregistrer ce fichier sous le nom menu.bat et en l'exécutant on obtient :

Menu dos

Magique ! Mais après ?

Après, il suffit de créer 3 fichiers de commandes appelés respectivement 1.bat, 2.bat et 3.bat qui vont lancer respectivement l'application correspondante.

Le fichier 1.bat va contenir :

@echo off
grattdos.exe
menu.bat

Son frère jumeau 2.bat va contenir :

@echo off
virvirus.exe
menu.bat

Et le troisième :

@echo off
win

Ce dernier ne comporte pas de rappel de menu.bat car une fois Windows lancé, il n'est plus possible de revenir au menu.

Mise en œuvre

Tous ces fichiers vont être placés dans le même répertoire, éventuellement directement sous la racine et une ligne va être ajoutée à la fin du fichier autoexec.bat pour lancer menu :

menu.bat

Si ces 4 fichiers ont été placés dans un répertoire, c:\outils\dos par exemple, il faut aussi modifier la commande path dans l'autoexec.bat :

path=%path%;c:\outils\dos

Exemple de démonstration

Une démo ? Téléchargez ici le fichier compressé auto-extractible (64 ko) contenant cet exemple. Les consignes générales concernant les fichiers à télécharger figurent sur la page d'accueil.

Créez un répertoire pour mettre les fichiers décompressés, faites les modifications au niveau de msdos.sys et de l'autoexec.bat, n'oubliez pas d'ajouter ansi.sys dans le config.sys, arrêtez complètement l'ordinateur et redémarrez (un redémarrage en mode MS-DOS via Démarrer/Arrêter ne prendrait pas en compte ces modifications).

Pour ne pas modifier ses fichiers de configuration on peut aussi créer un raccourci vers le DOS natif avec fichiers spécifiques.

 

Toutes les pages du site Les autres sites

accueil
aide en ligne sur les commandes
créer un menu de configuration dans le fichier config.sys
disquettes d'amorce
fichiers config.sys et autoexec.bat
fichiers de commandes
gestion de menus avec des fichiers de commandes
indicateurs de redirection et conduit
LPT1 et les imprimantes USB
mode console, DOS émulé ou natif
noms courts et noms longs
personnalisation du DOS
prise en compte des ports USB
répertoires et dossiers
un CD boîte à outils
variables d'environnement

Tentatives de bonnes réponses à des questions qui peuvent ne pas l'être

 

Les bricolages de Heffgé