Initiation à la programmation de BATches

Première Partie

Le 9 Septembre 1997

Tout d'abord bonjour à tous, je me présente : Bruno FRÉDÉRIC <mp3@mygale.org>.

Nous apprendrons dans cette initiation à réaliser des BATches pour COMMAND.COM (l'interpréteur de commande livré avec MS-DOS) et par la suite pour 4DOS (interpréteur de commande édité par JP Software qui est beaucoup plus performant que COMMAND.COM).

 

Qu'est ce qu'un BATche ???

Basiquement, un BATche est un ficher texte avec l'extension ".BAT". Si vous vous êtes déjà aventuré dans ce monde obscur qu'est le MS-DOS, vous ne pouvez pas n'en avoir jamais vu : le plus connu d'entre eux est biensûr l'AUTOEXEC.BAT qui est exécuté à chaque démarrage de votre PC.

Si "AUTOEXEC.BAT" ne vous dit rien, passez votre chemin, la réalisation de BATche nécessite un minimum de connaissance du MS-DOS : apprenez dans un premier temps à maîtriser cet environnement et revenez à cette introduction ensuite.

En fait un fichier BATche est composé d'une suite de commandes MS-DOS telles que vous les taperiez sous l'invite ("prompt"), chaque nouvelle ligne du fichier correspondant à une nouvelle commande.

Par exemple si vous lancer le fichier BATche contenant les commandes suivantes :

c:
cd \jeux\war2
war2.exe

Cela aura le même effet que si vous tapiez sous l'invite les commandes :

c: [Entrée]
cd \jeux\war2 [Entrée]
war2.exe [Entrée]

 

Quel est l'intérêt des BATches ?

L'intérêt des BATches est de permettre une automatisation de toutes les tâche répétitives du MS-DOS.

Mais pourquoi préférer le BATche à un autre langage tel que le C ou le Pascal ?

  • Tout d'abord comme les BATches ne se compilent pas, ils sont directement exécutables.
    En fait pour programmer en BATche, un simple éditeur de texte tel que l'EDIT du MS-DOS est nécessaire. Une fois le BATche sauvegardé, il suffit de taper son nom sur la ligne de commande pour l'exécuter (à condition de bien l'avoir nommé avec l'extension ".BAT").
    Cela permet d'écrire les BATches très rapidement.
    Ensuite, étant donné que les BATches utilisent les commandes MS-DOS, on a une grande bibliothèque de fonctions dédiées à la gestion des fichiers à notre disposition et on peut très simplement appeler d'autres programmes pour effectuer certaines tâches particulières simplement en incorporant leur ligne de commande dans le BATche.

Quelles sont ses limites ?

    Comme je le disais juste au-dessus, le BATche n'est pas un langage compilé, ce qui le rend particulièrement lent par rapport à un langage compilé.
  • Vous voulez accédez directement à la mémoire, aux périphériques : laissez tomber, le BATche est un langage de TRÈS haut niveau (tout comme le BASIC) qui n'est pas du tout adapté à ce genre de manipulation.
    Cependant vous pouvez bien entendu appeler un programme qui va faire des opérations de bas niveau depuis un BATche.

 

Quels sont les logiciels nécessaires à la réalisation de BATche ?

Comme le BATche n'est pas un langage compilé, vous n'avez pas besoin de compilateur : c'est l'interpréteur de commande (ou "shell") qui interprètera (d'où son nom) le fichier BATche quand vous le lancerez. En fait, on peux considérer que l'interpréteur de commande est d'une certaine manière un compilateur qui compile le fichier BATche au fur et à mesure de son exécution.

Le seul programme dont vous aurez réellement besoin est donc un éditeur de texte tel que celui livré en standard avec MS-DOS (version 5.0 et superieure) : "EDIT". Si vous êtes habitué à utiliser un autre éditeur de texte tel que Aurora, Emacs, Multi-Edit, ceux-ci feront aussi parfaitement l'affaire.

Comme je vous le disais, c'est l'interpréteur de commande qui interprétera les commandes contenues dans le BATche et tout comme il existe plusieurs compilateur Pascal ou C, il existe plusieurs interpréteurs de commandes pour MS-DOS, les deux principaux sont "COMMAND.COM" et "4DOS" :

    COMMAND.COM est l'interpréteur de commande livré avec MS-DOS. C'est probablement celui que vous utilisez car c'est celui qui est chargé par défaut au démarrage du MS-DOS. Pas grand chose à dire dessus, si ce n'est qu'il est très très limité et beaucoup moins agréable à utiliser que 4DOS.
  • 4DOS est un interpréteur de commande shareware édité par JP Software. Il est beaucoup plus performant que COMMAND.COM car il nous offre un nombre bien plus important de fonctionnalités permettant de réaliser des BATches très performant. D'autre part, il est très agréable à utiliser grâce à la complétion automatique des noms de fichiers avec la touche TABulation et grace à la coloration des fichiers en fonction de leur extension.
    Enfin, 4DOS est totalement compatible avec COMMAND.COM, cela veut dire que toutes les commandes COMMAND.COM sont utilisables avec 4DOS, et donc un BATche COMMAND.COM tournera parfaitement sous 4DOS, cependant l'inverse n'est pas vrai.

Vous l'aurez compris, le téléchargement de 4DOS s'impose pour tout utilisateur du MS-DOS, vous pouvez donc vous rendre sur le Web de JP Software en suivant ce lien : http://www.jpsoft.com/ pour vous le procurer.
J'aborderai sa configuration lorsque nous apprendrons à utiliser ses fonctionnalités particulières dans nos BATches.

 

Notre premier BATche :

Comme dans toute introduction à un langage de programmation digne de ce nom, nous allons réaliser un programme qui va afficher un "Coucou tout le monde" à l'écran. Pour cela, lancer votre éditeur de texte et taper le programme suivant :

Echo Coucou tout le monde !

Sauvegardez le en l'appelant "COUCOU.BAT" par exemple (n'importe quel nom ayant l'extension ".BAT" conviendra). Quitter l'éditeur de texte et lancer le programme en tapant "COUCOU.BAT". Vous obtenez alors quelque chose comme cela :

c:\>coucou.bat
Echo Coucou tout le monde !
Coucou tout le monde !

c:\>_

Hélas, ce n'est pas le résultat que nous espérions : biensûr, le "Coucou tout le monde" s'affiche, mais la commande qui nous a permit de l'afficher ("Echo Coucou tout le monde !") s'affiche aussi. Pour remédier à ce problème, il suffit de mettre un "@" au tout début de la ligne de commande que l'on désire ne pas se voir afficher, notre programme devient alors :

@Echo Coucou tout le monde !

Le résultat obtenu est alors :

c:\>coucou.bat
Coucou tout le monde !

c:\>_

Et voilà, notre premier programme est parfaitement au point ! Et vous l'aurez compris, pour afficher un message, il faut utiliser la commande "Echo" suivie de la chaîne de caractères à afficher.

Cependant, mettre un "@" au tout début de chaque ligne du fichier BATche deviendrait vite fastidieux. Heureusement, il existe une commande qui permet d'éviter que toutes les commandes du fichier BATche qui la suivent soient affichées, il s'agit de la commande "Echo Off", en l'utilisant dans notre programme, celui-ci deviendra :

@Echo Off

Echo Coucou tout le monde !

Notez que la commande "Echo Off" est précédée d'un "@", tout simplement pour qu'elle même ne soit pas affichée.

Vous pouvez au moyen des commandes MS-DOS que vous connaissiez déjà, réaliser des petits BATches qui vous faciliteront grandement la vie.

Reprenons notre premier exemple :

c:
cd \jeux\war2
war2.exe

En rajoutant un "@Echo Off" au tout début de celui-ci et en le sauvegardant dans un répertoire du PATH avec un nom comme "W.BAT" vous obtiendrez ainsi un BATche qui vous permettra de vous défouler à votre jeu préféré simplement en tapant "W [Entrée]" sous la ligne de commande et ceci depuis n'importe quel répertoire !!!

C'est bien beau tout ça, mais j'en vois déjà qui sont perdus car ils ne savent pas ce qu'est le "PATH". Et bien pour répondre à leur soif de savoir, le "PATH" est une variable d'environnement du MS-DOS. Et alors c'est quoi "une variable d'environnement du MS-DOS" ? Et bien, c'est une variable qui est définie en général au démarrage de la machine et qui a une influence sur le comportement du MS-DOS.

Le PATH est défini dans l'AUTOEXEC.BAT par une ligne du genre :

PATH C:\WINDOWS;C:\WINDOWS\COMMAND

Cette variable contient en fait une liste des répertoires (séparés par des point virgules) dans lesquels MS-DOS doit chercher les programmes s'il ne les trouve pas dans le répertoire courant. Ainsi, en mettant notre "W.BAT" dans un répertoire du PATH nous pourrons l'exécuter depuis n'importe quel répertoire. Nous pouvons aussi créer un répertoire que nous appellerons par exemple "BATCHES" dans lequel nous mettrons tous nos BATches et que nous rajouterons au PATH. Cette dernière possibilité étant la meilleure puisqu'elle évite de perdre nos BATches dans la foule des fichiers de Windows.

Voilà, c'est tout pour cette fois-ci. Dans la prochaine partie nous verrons comment réaliser des programmes qui manipulent des variables et qui analysent les paramètres que nous leur mettrons en ligne de commande.
Pour vous entrainer, écrivez des petits programmes qui vous permettront de lancer rapidement les applications que vous utilisez le plus souvent.