MS Dos Le DOS sied

Créer un menu de configuration dans le fichier config.sys

 

La commande menuitem

Inclure des commandes menuitem dans le fichier config.sys permet de construire un menu qui va s'afficher au démarrage de l'ordinateur et inviter l'utilisateur à choisir une option.

Plutôt que de longues explications un exemple va permettre de montrer comment se servir de cette commande. Voici donc un fichier config.sys assez standard :

[MENU]
menuitem=CD, Avec prise en charge du lecteur de CDROM
menuitem=NOCD, Sans prise en charge du lecteur de CDROM

[NOCD]
device=himem.sys /testmem:off

[CD]
device=himem.sys /testmem:off
devicehigh=oakcdrom.sys /D:mscd001

[COMMON]
dos=high,umb
devicehigh=display.sys con=(ega,,1)
country=033,850,country.sys

La première chose à noter est que les commandes ont été réparties dans des blocs de configuration chacun étant identifié par un nom écrit entre crochets. À l'exception de [MENU] et de [COMMON] les noms sont libres, ceux ci n'étant donnés qu'à titre d'exemple, et aucune distinction n'est faite entre majuscules et minuscules. Les blocs peuvent apparaître dans un ordre quelconque au sein du fichier config.sys mais il est préférable, comme dans cet exemple, d'adopter une présentation respectant la séquence d'exécution afin de simplifier la relecture ultérieure.

Chaque commande menuitem correspond à une ligne du menu. On y indique le nom du bloc correspondant et le texte qui sera affiché précédé du numéro de l'option. Ici il n'y aura que deux options possibles, avec ou sans le lecteur de CDROM.

Lorsque le fichier config.sys est lu le menu s'affiche puis l'exécution est suspendue. L'utilisateur est alors invité à choisir un numéro d'option. Le défaut est 1.

Menu config.sys 1

Si c'est l'option 2 qui est retenue (sans le lecteur de CDROM) ce sont les commandes contenues dans le bloc correspondant [NOCD] qui vont être exécutées. Dans le cas contraire ce serait le bloc [CD]. Dans les deux cas les commandes du bloc [COMMON] sont exécutées.

En fonction de l'option choisie on n'exécute donc que telle ou telle partie du fichier config.sys.

La variable d'environnement CONFIG

Mais cela ne s'arrête pas là car simultanément le nom du bloc à exécuter est affecté à la variable d'environnement CONFIG. Tous les programmes qui vont être lancés ultérieurement vont donc pouvoir, en examinant le contenu de cette variable, savoir quelle option a été choisie et adapter leur comportement en conséquence. Cette remarque vaut également pour les fichiers de commandes et notamment pour le fichier autoexec.bat.

Avec le fichier config.sys ci-dessus on pourra donc avoir la séquence suivante au sein du fichier autoexec.bat :

...
if "%config%"=="NOCD" goto suite
lh mscdex.exe /D:mscd001
:suite
...

Si la variable d'environnement CONFIG contient NOCD, on saute l'exécution de mscdex.exe (voir prise en charge des lecteurs de CDROM). On gagne ainsi sur le temps de démarrage et l'on évite le message d'erreur qui serait émis dans ce cas.

Commandes associées

Il existe d'autres commandes utilisables dans le fichier config.sys, notamment menudefault et include, plus quelques-unes de moindre intérêt.

Sur la copie d'écran présentée ci-dessus on voit qu'un numéro d'option par défaut est affiché. C'est celui correspondant à la première commande menuitem rencontrée.

Comme son nom le suggère menudefault permet de spécifier l'option par défaut. On peut également indiquer un nombrer de secondes au bout duquel elle sera automatiquement sélectionnée. Reprenons notre exemple en ajoutant une commande menudefault.

[MENU]
menuitem=CD, Avec prise en charge du lecteur de CDROM
menuitem=NOCD, Sans prise en charge du lecteur de CDROM
menudefault=NOCD,5

[NOCD]
device=himem.sys /testmem:off

[CD]
device=himem.sys /testmem:off
devicehigh=oakcdrom.sys /D:mscd001

[COMMON]
dos=high,umb
devicehigh=display.sys con=(ega,,1)
country=033,850,country.sys

Nous avons précisé que c'est la deuxième option qui sera celle par défaut et que, sans action de l'utilisateur, elle sera automatiquement sélectionnée au bout de 5 s. Voici le résultat.

Menu config.sys 2

Dans cet exemple on constate que les blocs [CD] et [NOCD] comportent en commun le chargement de hymem.sys, le gestionnaire de mémoire haute. Cette commande ne peut pas être rejetée dans le bloc [COMMON] car elle doit être exécutée préalablement au chargement en mémoire haute de oakcdrom.sys dans le bloc [CD]. Pour éviter de répéter cette commande commune on peut utiliser la commande include. On obtient la syntaxe suivante :

[MENU]
menuitem=CD, Avec prise en charge du lecteur de CDROM
menuitem=NOCD, Sans prise en charge du lecteur de CDROM
menudefault=NOCD,5

[NOCD]
include=MEM

[CD]
include=MEM
devicehigh=oakcdrom.sys /D:mscd001

[COMMON]
dos=high,umb
devicehigh=display.sys con=(ega,,1)
country=033,850,country.sys

[MEM]
device=himem.sys /testmem:off

Dans ce cas l'intérêt est discutable mais l'utilisation de la commande include est pleinement justifiée dans le cas où une même séquence de commandes devrait figurer dans plusieurs blocs. On peut également utiliser la commande include pour vider le bloc [COMMON] comme ci-dessous.

[MENU]
menuitem=CD, Avec prise en charge du lecteur de CDROM
menuitem=NOCD, Sans prise en charge du lecteur de CDROM
menudefault=NOCD,5

[NOCD]
include=STD

[CD]
include=STD
devicehigh=oakcdrom.sys /D:mscd001

[STD]
device=himem.sys /testmem:off
dos=high,umb
devicehigh=display.sys con=(ega,,1)
country=033,850,country.sys

[COMMON]

Cet exercice est ici totalement gratuit. Encore une fois, il est préférable de s'en tenir à une présentation facilitant la relecture ultérieure.

Limites

Un menu au niveau du fichier config.sys permet de choisir une configuration de démarrage et de n'exécuter que les commandes strictement nécessaires au mode de fonctionnement choisi. On raccourcit le temps de démarrage, on économise des ressources et on évite d'éventuels conflits de configuration.

Cependant puisque la variable d'environnement CONFIG garde une trace de l'option choisie on pourrait être tenté d'utiliser un tel menu pour choisir entre telle ou telle application à faire lancer automatiquement par le fichier autoexec.bat. Ceci ne pose aucun problème de fonctionnement mais le fichier config.sys étant un fichier de démarrage, donc lu une seule fois, il ne serait pas possible de réafficher le menu une fois que l'exécution de l'application choisie est terminée. Il faudrait redémarrer l'ordinateur.

Un menu géré par le fichier config.sys a pour vocation d'offrir un choix entre plusieurs configurations. Il est préférable de s'en tenir à ce rôle. Pour créer un menu pilotant le lancement d'applications on utilisera de préférence des fichiers de commandes comme étudié dans le chapitre consacré à cette technique.

 

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 re-direction 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é