Tutoriel Batch
Tutoriel Batch
Tutoriel Batch
V] Exécution conditionnelle
VII] La compilation
Basiquement, un fichier Batch n'est rien de plus qu'un fichier texte contenant des
commandes MS-DOS, et possédant le suffixe ".bat".
En fait, un fichier Batch contient simplement une suite de commandes que vous
pourriez taper sous l'invité (prompt) du DOS, chaque nouvelle ligne du fichier
correspondant à une nouvelle commande. Néanmoins, certaines commandes ne
sont qu'utilisables dans les fichiers batch du fait de leur inutilité dans l'environnement
de commande DOS.
Leur utilité est, par exemple, quand il faut répéter toujours la même série de
commandes. À titre d'exemple, nous pourrions évoquer le changement de répertoire
et peut-être aussi la commande FORMAT qu'on fait souvent suivre de la commande
CHKDSK pour vérifier si la disquette a bien été formatée.
Exemple :
Imaginons un fichier batch contenant les commandes suivantes :
cd \
cd games
superjeu.exe
Cela aurait le même effet que si vous tapiez sous DOS les commandes suivantes :
C:\Chemin> cd \ [Entrée]
L'intérêt des batch est donc d'automatiser des tâches répétitives effectuées sous
DOS.
Les fichiers batch sont donc très faciles à créer puisqu'un simple éditeur texte suffit
(Comme EDIT, sous DOS)
Les fichiers batch peuvent également utiliser toutes les commandes DOS, ce qui
rend disponible pour le programmeur un grand nombre de fonctions.
Enfin, leur taille est relativement légère par rapport à d'autres programmes, ce qui
facilite leur transfert sur différents disques et supports de stockage.
Cependant…
• Les fichiers Batch sont directement éditables, donc votre code n'est pas
"protégé" à la copie par d'autres programmeurs,
Nous allons apprendre à nous en servir pour créer nos fichiers Batch.
2°) Décompressez le fichier ZIP, lisez attentivement les fichiers "Lisez – moi", puis
installez le logiciel .
>Arborescence
L’arborescence est l’ensemble de tous les répertoires d ‘un même disque.
La « base » d’un disque (c’est-à-dire un niveau où nous n’appartenons à aucun
répertoire) est appelé « racine » de ce disque, et symbolisée par un « \ ».
L’arborescence est donc l’ensemble des répertoires à partir de la racine d’un disque.
L’arborescence est souvent représenté de manière schématique, afin de visualiser
niveaux et sous-niveaux d’un disque.
Ainsi, un disque d : contenant quatre répertoires : « DOS », « DOCS »,
« ARCHIVES », et « DIVERS », dont le dossier « DOCS » contenant lui-même un
sous dossier « TEST » contenant lui-même un autre dossier « FILES » sera affiché à
l’écran à l’aide de la commande DOS tree de cette manière :
D:\
| DOS
| ARCHIVES
| DIVERS
| DOCS
| ---- TEST
| |------ FILES
>Chemin d’accès
Pour accéder à un fichier sur un disque, il ne suffit pas de connaître juste son nom, il
faut aussi, dans la plupart des cas connaître sa localisation exacte dans
l’arborescence.
Un fichier texte « FICHIER.TXT » sur « c : », dans le répertoire « TEST » contenu lui-
même dans « DEMO » aura un chemin d’accès correspondant à la concaténation
des noms de dossiers et du disque, séparés par des délimiteurs « \ » :
C:\TEST\DEMO\FICHIER.TXT
>Commandes
Pour que MS-DOS « comprenne » ce que vous voulez faire, il faudra communiquer
avec lui par des mots standardisés, analysés par un programme nommé
« interpréteur ».
Étant des mots clés réservés, aucun fichier ou dossier ne doit se nommer par le nom
d’une commande. De plus, les commandes existent souvent sous deux formes :
abrégées et entières (exemple : MKDIR et MD)
Une commande interne est un mot reconnu par l'interpréteur qui constitue un
élément du langage MS-DOS.
Une commande externe est en réalité un programme fourni avec l'interpréteur. Il est
placé dans un répertoire spécifique afin que MS-DOS puisse le reconnaître comme
un élément du langage. Il permet une évolution, voire une meilleure souplesse du
langage.
Par exemple, la commande " subst" qui permet d'affecter un nom d'unité logique
(lettre de lecteur) à un répertoire d'un disque, est en fait un programme exécutable.
• Le mode réel, c’est-à-dire où MS-DOS est le seul maître à bord sur votre
système. Il s’adresse directement à votre processeur, et gère tout seul votre
mémoire. Ce mode est exécuté lors d’un démarrage en mode MS-DOS, et dans ce
cas, Windows se retire presque entièrement de la mémoire. Dans les nouvelles
versions de Windows (Me, XP), ce mode n’existe plus.
• Le mode émulé (ou mode protégé) : C’est lorsque vous voyez les fameuses
« fenêtres MS-DOS » dans Windows. En fait, ce n’est pas le vrai DOS, ce n’est
qu’une simulation du DOS réel, agrémenté de nouvelles fonctions (autant de
machines DOS virtuelles que vous les souhaitez, par exemple). Ce mode s’avère
naturellement problématique pour certains programmes DOS spéciaux, dans ce cas,
il vaut mieux recourir au mode réel)
1°) Création du fichier Batch "Hello, World"
Nous allons nous atteler à la programmation d'un fichier affichant à l'écran le
traditionnel "Hello World" en langage Batch.
La capture d'écran ci-dessous vous montre l'écran du logiciel lorsque vous le lancez.
En réalité, ECHO est utilisé pour faire sortir tous types de données dans n'importe
quel périphérique (et même dans un fichier). Dans notre cas, nous l'utilisons pour
faire sortir des données sur l'écran d'un ordinateur, nous allons donc dire pour
l'instant que ECHO est une commande permettant d'afficher du texte à l'écran.
Pressez F6, ou exécutez la commande "Test du fichier courant" situé dans le sous-
menu "Tests" du menu "Programme".
Le DOS nous a bien affiché notre résultat, MAIS il apparaît comme si on venait
d'entrer les commandes séparément sous DOS : En effet, on distingue l'invite
(généralement c:\Program Files\PowerBatch>), la commande (Echo Hello, World !),
son résultat dessous, puis un second invite.
Nous souhaiterions que seuls les résultats des commandes apparaissent à l'écran.
Il va falloir utiliser l'écho local. L'écho local est une variable qui, selon qu’elle est sur
« on » (activée) ou « off » (désactivée), permet ou de voir uniquement les résultats
des commandes entrées.
Ci-dessus, l'écho local est activé, puisque l'on voit l'invite DOS et les commandes
comme si on les avait tapés sous DOS.
Il va falloir désactiver cet écho en tapant :
Echo off
• Vous avez écrit la commande "Echo" permettant d'afficher du texte à l'écran, mais
vous avez transmis un paramètre particulier à la commande : il s'agit du paramètre
"off", qui désactive l'écho local. Cette commande accepte aussi le paramètre "on" qui
permet d'activer cet écho. Vous avez donc dans le cas présent désactivé l'écho local.
Echo off
Echo Hello World !
Néanmoins, on voit toujours l'invite en haut, ainsi que "echo off". Il nous faut donc
trouver un moyen de les supprimer.
La commande "@" est adapté à notre cas : elle permet de désactiver immédiatement
l'écho pour une ligne, il suffit juste de faire précéder la ligne de ce signe.
On a donc :
@Echo off
Echo Hello World !
Pressez F6 pour exécuter le fichier et batch… Et là, on a enfin que ce que l'on
cherche :
A retenir…
@Echo off
Echo Bonjour, c'est l'ordinateur qui te parle !
Echo.
Echo N'ai pas peur… je ne te veux aucun mal.
Echo.
Echo J'espere que tu vas bien.
Echo Moi, c'est le cas !
Echo.
Donne :
Commentez votre code
Il est donc nécessaire d'insérer des remarques, appelées "commentaires" dans vos
fichiers.
La commande "REM" (REMark) est là pour vous ! Il suffit simplement d'apposer votre
commentaire après la commande, par exemple :
@echo off
REM Formatage de la disquette
Format a:
REM Creation du dossier Backup sur a:\
Mkdir a:\backup\
REM Copie des fichiers
Copy c:\backup\*.* a:\backup\*.*
La commande REM ne sera pas exécutée, mais vous aidera à mieux comprendre ce
que vous avez voulu faire lorsque vous n'avez pas étudié le Batch depuis longtemps.
Les caractères spéciaux sont les accents, signes divers comme /, %, etc.
N'utilisez pas d'accent, car MS-DOS va remplacer les caractères accentués par des
symboles :
@echo off
echo J'ai été reçue à mon examen !
Donne :
La commande CLS (Clear the Screen) permet d’effacer les données affichées
actuellement à l’écran, ce qui « nettoie » la zone de texte.
Les textes précédemment à l’écran sont effacés, et les données recommencent à
être affichées en haut à gauche de la fenêtre DOS.
Utilisez régulièrement CLS pour plus de lisibilité dans l’exécution de vos batchs.
A retenir…
Pour exécuter une commande DOS, il vous suffit d'insérer la commande dans le
fichier batch.
Par exemple, voici un fichier listant le contenu du disque C:, allant dans le dossier
Jeux, puis exécutant le fichier SuperJeu.exe :
@echo off
echo Listage du disque C:\
dir c:
echo Va dans le dossier jeux
cd jeux
echo Lance SuperJeux.exe
Superjeux.exe
Notre but n'est pas de vous apprendre toutes les commandes MS-DOS, vous êtes
censé connaître les plus communes.
RAPPEL : Nous sommes sous DOS, les noms de fichiers sont limités à 8 caractères
(sinon, on tronque les deux derniers caractères par ~x, x représente un nombre
"discriminant" destiné à distinguer deux éventuels noms communs)
Il y a deux possibilités :
Une commande est par définition un "mot" que l'on peut entrer où que l'on soit (que
l'on soit dans le répertoire A ou le répertoire B), et qui ne nécessite pas qu'on indique
son chemin d'accès, et qui bien sûr agit physiquement ou « logicielement » sur votre
ordinateur directement ou à l'aide de paramètres.
RAPPEL : Pour lancer un fichier .EXE, .COM ou .BAT, il n'est pas nécessaire
de préciser l'extension de ces derniers.
Pour lancer Superjeu.exe, vous n'êtes pas obligé de taper :
Superjeux.exe
Superjeu
Si vous possédez un fichier .exe, .com ou .bat, et que vous souhaitiez l'établir en tant
que commande DOS, copiez – le simplement dans ce répertoire.
Résultat : Pour "ajouter" des commandes à MS-DOS, copiez des exécutables DOS
d'extension .bat, .exe, ou .com dans le répertoire "COMMAND" du dossier de
Windows.
Pour voir les chemins d'accès possibles installés sur votre machine, tapez "path"
dans une session MS-DOS.
On peut voir que les répertoires d'accès sont au nombre de 3, et séparés par des
points-virgules :
Cela veut dire que n'importe quel fichier .exe, .bat, ou .com peut être lancé comme
une commande dans l'environnement DOS :
"Path" est une variable d'environnement, c'est à dire, (nous le verrons plus en détails
plus tard) que cette variable représente une valeur accessible n'importe ou et
n'importe quand dans l'environnement DOS.
Dans le cas actuel, cette variable est modifiable, nous allons donc inclure un autre
chemin d'accès dans cette variable.
PATH=%PATH%;CHEMIN_A_AJOUTER
En effet :
PATH=%PATH%;C:\MESJEUX\SUPERJEUX
PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\MESJEUX\SUPERJEUX
Superjeu.exe
Cela signifie aussi que tous les autres fichiers situés dans le "%path%" pourront-être
lancés comme des commandes standard.
Par exemple, si "c:\WINDOWS" est dans le Path, entrez Winver pour lancer
C:\windows\winver.exe et afficher la version de Windows (Bien sur ce programme
n'est pas fait pour le dos, c'est donc Windows qui le lancera automatiquement).
FORMAT a: /V[:MaDisquette] /B /C
Ce programme reçoit donc comme argument tous les paramètres envoyés par
l'intermédiaire du DOS.
Votre Batch peut, on le verra plus en détail plus tard, recevoir neuf paramètres
séparés par des espaces, comme un programme standard comme FORMAT.EXE
peut le faire.
Ce sont des variables d'environnement spéciales destinées spécifiquement au fichier
Batch qui est utilisé : chaque Batch peut donc lire les arguments, si il y en a, qui lui
sont envoyés lors de son lancement.
@echo off
echo L'adresse de ce fichier est %0
echo Le premier parametre est %1
echo Le second parametre est %2
echo Le troisieme parametre est %3
echo Le quatrieme parametre est %4
Dans le cas ou vous n'envoyez aucun paramètre (vous lancez simplement le fichier),
vous obtenez un résultat de ce type :
Envoyez 3 paramètres, par exemple "/V" pour le premier paramètre, "ABC.EXE" pour
le second, et "C:\" pour le troisième.
Sous DOS, vous pouvez lancer le fichier en le faisant précéder de son adresse, puis
en envoyant les paramètres, par ex :
Vous pouvez procéder plus facilement avec PowerBatch : entrez simplement ces
paramètres dans la boite de dialogue affichée juste avant n’importe quelle test : le
fichier est exécuté avec les paramètres entrés.
Ce qui donne :
A retenir…
Même si ces notions peuvent vous sembler un peu disparates, elles sont
importantes pour aborder la suite de la formation :
Pour visualiser les variables d'environnement actives sur votre ordinateur, il vous
suffit de taper la commande set ce qui donne par exemple :
Précisons que, dans le langage Batch, la seule facon de stocker des données est de
les associer à des variables d'environnement. Il n'existe pas de variables "locales"
que d'autres fichiers Batch ne pourraient pas connaître (sauf les variables sous la
forme %x)
Nous voyons donc que 8 variables d'environnement sont définies sur cet ordinateur :
TMP, TEMP, PROMPT, WINBOOTDIR, COMSPEC, PATH, WINDIR; et BLASTER.
Sur ces 8 variables, 7 sont définis par WINDOWS : TMP (Répertoire temporaire),
TEMP (Répertoire Temporaire), PROMPT (Invite du DOS), WINBOOTDIR (Dossier
de démarrage de Windows), COMSPEC (Adresse de l'interpréteur de commandes),
PATH et WINDIR (Dossier de Windows).
Il est important de savoir que le contenu de ces variables est détruit une fois
l'ordinateur éteint ou la session DOS terminée. Il faut donc, si ces variables doivent
être présentes à chaque session et si elles ne sont pas automatiquement déclarées
par Windows, les définir dans Autoexec.bat (qui est lui lancé à chaque démarrage).
Nous allons donc taper dans le DOS, ou écrire dans un fichier batch :
Set VersionWindows = 98 SE
Validez la commande puis exécutez le Batch.
Il semble que rien ne se passe : normal, cette commande ne produit pas de résultat
visible à l'écran.
Pour voir si notre ajout a été pris en compte, il suffit de taper "set" pour voir si notre
variable a été ajoutée à la liste de celles déjà définies sur notre ordinateur.
Dans notre cas, il apparaît :
Notons que :
• N'importe quel autre programme peut lire, modifier ou réécrire sur cette
variable.
Il suffit de réécrire la commande avec une nouvelle valeur, qui viendra écraser
l'ancienne, par exemple :
Set VersionWindows =
Pour utiliser une variable d'environnement, il faut l'encadrer par des "%".
Il n'y a que la commande SET qui ne demande pas de signe "%" pour l'argument
représentant le nom de la variable à définir : en effet, on ne lit pas la valeur de la
variable, mais on la définit.
Lors de l'exécution du Batch, lorsque l'interpréteur rencontre un nom encadré de
deux "%", il substitue ce nom par la valeur de la variable qu'il représente, si elle
existe.
Exemple :
Echo %VersionWindows%
Echo La version de Windows est %VersionWindows%
Set VersionWindows = %VersionWindows% - 32 Bits
A retenir…
Dans PowerBatch, vous pouvez facilement agir sur les variables en utilisant le
sous – menu "Variables" du menu "Commandes"
Le langage Batch vous permet d'utiliser des commandes de boucle, c'est a dire de
répeter un bloc de commandes indéfiniment.
Nous allons étudier dans ce chapitre la commande "Goto". C'est une commande de
saut inconditionnelle, qui ne peut être arrêtée (ou à l'aide de commandes que vous
ne connaissez pas encore), par conséquent vous allez être amené à fermer de façon
"brutale" des programmes DOS, et vous rencontrerez sans doute ce message :
Cela signifie que vous tentez d'arrêter un programme DOS qui est toujours actif.
Cliquez sur "Oui" pour quitter le programme.
En principe, les lignes de commande sont traitées les unes après les autres dans un
fichier Batch. Toutefois, dans certains cas, on est obligé de sauter des lignes pour
reprendre le traitement à un autre endroit du fichier. C'est dans ces cas là que nous
allons utiliser les commandes de boucle.
- La seconde est la commande Goto, (de l'anglais Go To… qui signifie "aller
à") qui, accompagnée du nom du Label, indique à l'ordinateur, quand il doit
se rendre à l'étiquette du même nom.
Par exemple :
Commande 1
Commande 2
Label BONJOUR
Commande 3
Commande 4
Commande 5
Goto BONJOUR
Les commandes 1, et 2, sont exécutées une fois, alors que les autres commandes
sont exécutées en boucle, puisque le programme rencontre "GOTO", va au label du
même nom, continue, rencontre à nouveau "Goto", reva au label , etc…
:NomDuLabel
Le nom ne doit pas dépasser 8 lettres (si le nom du label dépasse 8 lettres,
seules les 8 premières lettres seront prises en compte), et ne pas être
composé d'espaces.
Par exemple
:Debut
Goto Debut
@echo off
:Start
echo Hello, World !
Goto Start
Le nom du label est librement configurable, vous pouvez prendre un tout autre nom
que "Start", l'essentiel étant que le nom du label et le nom qui suit le "Goto" soient
identiques.
A retenir…
Attention : seul la fin de la ligne est exécutée, par conséquent seule 1 seule
commande peut-être conditionnelle, ce qui peut parfois poser des problèmes. Dans
ce cas, utilisez la commande GOTO pour aller à un endroit particulier si la condition
est remplie.
Syntaxe d'utilisation :
If "<condition>"=="<valeur>" <action>
Vous pouvez bien sur comparer des variables avec des valeurs ou comparer des
variables ensembles, mais n'oubliez pas de les encadrer par des guillemets.
Pourquoi ? Parce qu'à l'exécution, la valeur des variables vient remplacer leur
écriture, et si une variable est nulle, MS-DOS génère une erreur car il ne peut
comparer un terme qui n'existe pas. Par compte, s'il y a des guillemets, MS-DOS
"comprend" qu'il fait une comparaison avec une variable vide.
Exemple :
IF NOT Condition
Vérifie si la condition est remplie. Si oui, la ligne suivante est traitée, sinon, le
reste de la commande est exécutée.
C'est en fait "l'inverse" de la commande IF.
Exemple :
IF EXIST Fichier
Vérifie l'existence du fichier désigné. Si il existe, le reste de la ligne est traité,
sinon on passe à la ligne suivante. Ce type de commande peut-être aussi
utilisé sous la forme "If not exist", dans ce cas le reste de la commande est
traité que si le fichier n'existe pas. Il est aussi important de noter que vous
n'êtes pas obligé d'utiliser des guillemets puisque le paramètre représentant le
fichier ne peut-être nul.
Exemple :
Exemple :
Format a:
If errorlevel 3 echo Vous avez annule FORMAT
par Ctrl+C !
Dans le cas si dessus, si le paramètre envoyé au batch n'est pas "/?"; les
commandes après "Suite" sont exécutées. Sinon, le texte d'aide est affiché.
A retenir…
6°) Boucles
Après avoir fait connaissance avec une technique de la programmation des sauts
inconditionnels (Goto), en voici une autre.
Nous allons créer un petit batch qui va afficher successivement les chiffres 1 à 4.
@echo off
for %%A in (1 2 3 4) Do Echo C'est le nombre
%%A
Ce fichier Batch contient une boucle FOR…DO. A quoi sert-elle ? Tout d'abord,
%%A est utilisé seulement en tant que nom de variable. Cette variable prend alors
toutes les valeurs de la liste spécifiée entre les parenthèses : dans notre cas, %%A
prend donc successivement les valeurs 1, 2, 3, et 4. Les valeurs constituant la liste
doivent être séparées entre elles par des espaces, des virgules, ou des points-
virgules.
Ensuite, la commande qui suit immédiatement est exécutée avec la valeur prise par
la variable %%A. Dans notre cas, on verra à l'écran le message "C'est le nombre"
suivi de la valeur de la variable à chaque exécution de ECHO.
Un autre intérêt de cette commande est que les éléments de la liste peuvent-être des
noms de fichiers. Ainsi il est possible d'exécuter une seule commande pour plusieurs
fichiers. Vous pouvez donc afficher à l'écran plusieurs fichiers à la fois avec un seule
commande qui est TYPE :
FOR %%A IN (AUTOEXEC.BAT CONFIG.SYS) DO TYPE
%%A
A retenir…
7°) La compilation
La compilation n'est pas assurée par PowerBatch, elle est effectuée par un logiciel
indépendant appelé "Bat2exec". Ce dernier n'est pas compatible avec toutes les
commandes DOS et Batch, par conséquent, testez bien le fichier compilé avant de le
distribuer pour éviter toute mauvaise surprise. Par exemple, la commande
"CHOICE", n'est pas supportée par le compilateur.
Compiler un fichier
1°) Créez ou ouvrez un fichier Batch. Dans notre exemple, il contient simplement :
@echo off
echo Bonjour, pressez une touche…
pause
2°) Choisissez la commande "Compiler" dans le menu "Fichier", puis nommez le
fichier qui va être crée.
La fenêtre suivante apparaît
Si toutes les commandes ont été supportées, et que Bat2Exec n'a rencontré aucune
erreur, PowerBatch affiche la boite de dialogue :
… (en effet, il y a un "Goto" qui pointe vers un label inexistant) et que nous essayons
de compiler le code, nous obtenons ce message d'erreur :
A retenir…
Pour cela, MS-DOS utilise tous les caractères "spéciaux", c'est pour cela que dans le
chapitre 1 nous vous avons conseillé d'éviter d'utiliser les caractères accentués tels
que "é,ç,à" etc…
En réalité, voilà ce qu'il faut entrer dans un Batch pour faire cette bordure :
Comme vous le voyez, cet assistant comporte une sorte d'"encadrement" constitué
de plusieurs images représentant un cadre fictif.
Il vous faudra en fait cliquer sur la case représentant la bordure voulue pour qu'elle
apparaisse dans la zone de texte de la fenêtre.
Cette bordure est constituée de : 1 ligne verticale, vous cliquerez donc 1 fois sur la
case représentant un trait vertical, 8 espaces, vous cliquerez donc 8 fois sur la case
"espace", puis 1 trait vertical, vous cliquerez donc 1 fois sur la case représentant un
trait vertical.
Ensuite, allez à la ligne pour créer la dernière ligne de la bordure :
Cette bordure est constituée de : 1 coin bas/gauche, 8 traits horizontaux, un coin
bas/droit : vous utiliserez donc les cases de l'assistant appropriées.
Pour afficher le fameux "Bonjour", il ne vous reste plus qu'à l'intercaler dans la
seconde ligne, en veillant à ce que les bordures verticales (représentées ici par des
"°") restent alignées avec les coins (ici É, >>, È,et 1/4)
Par conséquent, utilisez l'assistant créateur de bordures pour encadrer des textes
automatiquement, si vous ne souhaitez pas entrer manuellement les caractères
spéciaux affichant les bordures.
Ce mode permet d'ajouter des données sans écraser celles qui étaient inscrites
précédemment dans le fichier.
Nous allons utiliser 2 chevrons, orientés vers la droite, qui pointent vers le nom de
fichier à utiliser :
• Si le fichier n'existe pas, il sera créé et les données y seront inscrites sans générer
d'interruptions ou d'erreurs, sauf si le ou les répertoires le contenant n'existent eux-
même pas.
• Le texte à inscrire sera ajouté à la fin du fichier
• Une nouvelle ligne sera créée dans le fichier à chaque fois que vous appellerez la
commande
Echo C:\www\StartServer.exe>>C:\Autoexec.bat
La commande DOS c:\www\StartServer.exe sera inscrite dans Autoexec.bat et
lancée à chaque démarrage.
Nous allons utiliser 1 seul chevron, orienté vers la droite, qui pointe vers le nom de
fichier à utiliser :
Echo Texte à écrire>c:\texte.txt
Comme précédemment, tout le texte compris entre "Echo" et les ">>" sera écrit dans
"c:\texte.txt".
• Si le fichier n'existe pas, il sera créé et les données y seront inscrites sans générer
d'interruptions ou d'erreurs sauf si le ou les répertoires le contenant n'existent eux-
même pas
• Le contenu du fichier sera automatiquement effacé. Toutes les données seront
perdues et remplacées par le texte entre "echo" et ">"
Par exemple, vous souhaitez sauvegarder le contenu d'une variable (Ici %CPT%)
dans le fichier "score.dat" situé dans C:\MonJeu\Scores\ :
Echo %CPT%>>C:\MonJeu\Scores\Score.dat
Comme nous l'avons dit plus haut si le fichier n'existe pas, il sera créé et les données
y seront inscrites sans générer d'interruptions ou d'erreurs sauf si le ou les
répertoires le contenant n'existent eux-même pas. Par conséquent, si les dossiers
"MonJeu" et "Scores" ne sont pas présent sur le disque au moment de l'exécution de
la commande, MS-DOS affichera un message d'erreur et le fichier ne sera pas crée.
Il va également de soi que la variable CPT doit-être précédemment définie, en
utilisant une commande de la forme Set CPT=20000 .
Vous pouvez inscrire le résultat d'une commande DOS dans un fichier, avec les deux
modes décrits plus haut ("Écrasement" et "Ajout").
Pour cela, vous n'avez qu'à supprimer "Echo", et remplacer le texte à écrire dans le
fichier par une commande MS-DOS.
Par exemple :
dir c:\*.*>>c:\listing.txt
Le contenu du disque C:\ sera inscrit en mode "rajout" dans le fichier listing.txt
"Nul" représente un périphérique virtuel inexistant. Utilisé avec ">" et ">>", il permet
d'"écrire" le résultat de commande vers rien du tout, c’est-à-dire, en clair, de les
masquer.
Par exemple :
Pause>Nul
Le texte normalement affiché par la fonction pause ("Presser une touche pour
continuer") n'est pas affiché, seule la fonction demeure (l'utilisateur doit presser une
touche pour que le déroulement du programme continue).
Note : NUL peut être aussi utilisé pour tester si un lecteur existe, avec une
commande de la forme if exists g:\NUL faitquelquechose
, "if" testant si un fichier virtuel pouvant représenter n'importe quel élément en réalité
sur le disque existe.
Vous pouvez également appeler un fichier batch à partir d'un autre sans pour autant
revenir au fichier batch de départ. Il suffit tout simplement d'appeler le fichier batch
par son nom (ou son adresse) c'est à dire sans CALL.
Vous pouvez appeler un fichier batch à partir d'un autre en utilisant son nom. Le
résultat est que le batch appelé est traité, mais il est impossible de revenir au batch
de sortie précédemment traité. On peut en quelque sorte parler de "liaison
unilatérale".
Exemple :
C:\MesBatch\fichier.bat
Appel avec CALL
Un batch X appelle un batch A à un endroit précis. CALL a pour rôle de contrôler que
MS-DOS remarque bien le "point de saut" et revienne dans le batch appelant après
avoir traité le batch appelé.
Le Batch A est donc utilisé comme un sous-programme. Cette utilisation comporte
un avantage majeur : on doit programmer une seule fois les routines batch et on peut
ensuite les appeler le nombre de fois que l'on veut à partir de n'importe fichier Batch.
Exemple :
CALL c:\MesBatch\Routine1.bat
11°) Travail avec ERRORLEVEL
De nombreuses commandes MS-DOS revoient une valeur de retour différente de 0
quand une erreur se produit. Dans le fichier Batch, elle peut-être consultée à l'aide
de la variable ERRORLEVEL. ERRORLEVEL 0 signifie qu'aucune erreur ne s'est
produite.
Si vous programmez en C des extensions pour MS-DOS, vous pouvez renvoyer des
valeurs à l'aide de l'instruction return.
Cette valeur peut-être testée avec IF, mais attention, il y a un léger point à surveiller :
si la valeur de retour est SUPERIEURE OU EGALE au numéro indiqué la
commande est exécutée. Par conséquent, si vous avez plusieurs ERRORLEVEL à
tester, commencez toujours par la plus grande, puis procédez par ordre décroissant.
Exemple : le fichier Batch suivant formate une disquette dans le lecteur A. Si une
erreur se produit ou si le processus est interrompu avec CTRL+C, le fichier Batch
renvoie un message d'erreur.
@echo off
format a:
if errorlevel 1 goto erreur
goto fin
:erreur
echo.
Echo Formatage impossible !
:fin
echo on
Second exemple. Remarquez que nous contrôlons toujours la valeur la plus élevée :
Echo off
Format a:
If errorlevel 4 goto erreur4
If errorlevel 2 goto erreur2
Echo Pas d'erreur, formatage effectué
Goto fin
:erreur4
echo Lecteur ou parametre non valable
goto fin
:erreur2
echo Formatage interrompu avec CTRL+C
goto fin
:fin
echo on
Toutes les commandes DOS ne renvoient pas des valeurs d'erreur. Les commandes
concernées n'utilisent que certaines valeurs.
Cette fonction vous permet de tester une seule ligne de votre fichier.
Pour tester une ligne, vous devez entrer le numéro de la ligne dans la zone de texte
de la fenêtre.
Entrez la ligne de départ dans la première zone de texte, puis la ligne d'arret dans la
seconde zone.
Le test pas à pas est obtenu en pressant la touche F7 (ou avec le menu
Programme>Deboggage) :
Ce mode vous permet de tester chaque ligne de code. Vous pourrez voir quelle ligne
déclenchera les erreurs, quelle valeur prendra les variables, etc…
Vous devrez presser la touche "O" ou "N" à chaque ligne, la touche « O » d’exécuter
la ligne, « N » de la passer sans l’exécuter.
Pour commencer un test pas à pas vous devez obligatoirement presser la touche "O"
de votre clavier dans la fenêtre DOS qui s'affichera.
2°) Les modèles Batch
La commande XCOPY est une commande DOS permettant d'effectuer des copies
avec plus d'options de la commande COPY. L'assistant XCOPY a été introduit dans
PowerBatch afin de vous aider à faire des copies de fichiers en utilisant des
paramètres et des options valides.
Cet assistant vous permet d'utiliser cette commande de façon optimale, et configure
rapidement des messages avec entrée clavier.
PowerBatch met également en relief le code converti (les commandes DOS seront
distinguées, les commentaires mis en italique etc.).
- Les noms de fichiers longs peuvent êtres utilisés dans une fenêtre DOS. Il
faut simplement se souvenir que l’espace ne fonctionne plus comme
séparateur entre les paramètres, mais qu’il faut utiliser des guillemets :
- Vous avez plus de mémoire : presque tous les pilotes importants comme
NET.EXE ou SHARE.EXE existent en version 32 Bits et peuvent utiliser
toute la mémoire, y compris celle située au delà de la limite des 1 Mo. Les
programmes qui refusaient de fonctionner pour cause de mémoire
insuffisante ont une nouvelle chance…
- Tous les paramètres d’une fenêtre DOS peuvent-être entrés dans une
boîte de dialogue « Propriétés ». L’éditeur PIF appartient au passé ; les
données sont toujours stockées dans les fichiers PIF pour des raisons de
compatibilité mais cela ne vous concerne pas (en fait les données sont
enregistrées dans la base des registres, et le fichier PIF se contente de
pointer vers elles)
DIR \\TEST\FILES\TEXTS
…Permet un accès direct à une ressource partagée par la création dans le
réseau d’un nom similaire précédé de :
\\NOMSERVEUR\NOMPARTAGE
Pour éditer les préférences d’exécution du programme, vous devez cliquer sur le
bouton droit de la souris, choisir la commande « Propriétés », et choisir les options
proposés dans les divers onglets de la boîte de dialogue.
Ligne de commande : Entrez ici le chemin d’accès ainsi que les paramètres
éventuellement nécessaires à l’appel du programme.
Répertoire de travail : C’est le répertoire utilisé par le programme pour lire et écrire
ses données (textes dans le cas d’un traitement de texte)
Fichier de commandes : Entrez ici le nom du fichier batch que vous désirez exécuter
avant le lancement du programme. Ce fichier peut par exemple déclarer et initialiser
des variables d’environnement ou effectuer des copies de secours de certains
fichiers. Vous pouvez également entrer l’adresse d’un autre programme EXE ou
COM ou une commande dos à exécuter.
Touche d’accès rapide : Vous pouvez affecter dans cette zone certains raccourcis
clavier pour lancer directement l’application.
Fermer en quittant : Désirez vous que la fenêtre DOS soit automatiquement fermée
une fois l’application terminée ?
• L’option Suggérer le mode MS-DOS approprié signifie que Windows vérifie qu’il
peut exécuter le programme correctement. S’il s’agit d’un programme « spécial », le
mode MS-DOS est suggéré et configuré dans la boîte de dialogue. Si vous inactivez
cette option, un programme « délicat » sera lancé malgré les risques de plantage.
La partie gauche indique si la police existe en BitMap, en TrueType ou dans les deux
formes. Vous pouvez également définir la taille des caractères. Les deux zones du
bas reproduisent l’effet du paramètre sélectionné sur la taille de la fenêtre (à gauche)
et sur celle des caractères (à droite).
Avec la taille AUTO, la taille des caractères sera automatiquement adaptée à celle
de la fenêtre.
L’allocation de la mémoire
L’allocation des divers types de mémoire est presque entièrement automatique sous
Windows 9x installé sur un ordinateur moderne.
Vos interventions se limiteront aux cas les plus complexes.
Gérer la fenêtre
L’onglet « Divers »
Le nom de cet onglet peut faire croire qu’il ne contient que quelques options
d’importance secondaire, or c’est exactement l’inverse.
Les paramètres accessibles dans l’onglet Divers peuvent par exemple, s’ils sont
maladroitement définis ; vous interdire de quitter une fenêtre DOS.
Édition rapide : Cette option permet de sélectionner des éléments de la fenêtre DOS
en vue de l’utilisation du presse-papiers. Dans la configuration par défaut, vous
devez utiliser le menu.
Mode exclusif : Si la souris cause des problèmes, ce mode peut y remédier tout en
autorisant l’usage de la souris. Attention tout de même : la souris n’est plus utilisable
sous Windows 95, et vous ne pourrez plus revenir à l’interface graphique en cliquant
au-dehors de la fenêtre DOS.
Toujours suspendre : Quand cette option est activée, l’exécution du programme est
suspendue lorsqu’il n’est pas utilisé.
Avertir si encore actif : Si cette option est activée, un message apparaît lorsque vous
tentez de fermer un programme DOS encore actif.
Sensibilité à l’attente : Ce curseur affecte au programme un délai pendant lequel le
processeur attend votre reprise d’activité avant d’affecter son temps de calcul à une
autre application. Pour augmenter les ressources du programme, déplacez le
curseur en direction de Basse, pour diminuer ses ressources, rapprochez le curseur
de Haute.
Collage rapide : Cochez cette case pour coller les données du presse-papier en
mode rapide. Si les données ne sont pas correctement collées, alors décochez cette
case.
• Les fonctions de réseau ne sont plus disponibles, mais elles peuvent être
chargées par la commande NET du fichier AUTOEXEC.BAT ou dans la
configuration individuelle de démarrage.
Pour que le programme soit démarré en mode MS-DOS réel, vous devez cocher la
case Mode MS-DOS.
Si vous souhaitez utiliser une configuration spécifique sans entrer de lignes de code,
cliquez sur le bouton « Configuration ».
Dans la boîte de dialogue, cochez les modules dont vous avez besoin et laissez à
Windows le soin d’inscrire la ligne adéquate dans le liste de configuration.
Enfin, signalons également que s’il existe un fichier DOSSTART.BAT sur votre
système, celui-ci sera exécuté lors du lancement du mode réel. Vous pourrez donc
inscrire toutes les commandes que vous désirez utiliser dans tout appel au mode
MS-DOS.
Pensez toujours à tester des programmes DOS récalcitrants sous Windows en mode
DOS réel. Dans la majorité des cas, vos problèmes seront résolus.
Information : Les préférences d’exécution standard pour toutes les fenêtres DOS
sont définies dans le fichier COMMAND.PIF. Si vous modifiez les propriétés dans la
fenêtre DOS, chaque programme DOS sera lancé sur la base des paramètres
modifiés.
J’ai dit dans le premier chapitre que des fonctions comme le traitement numérique,
l’entrée clavier (de mots, et non pas de lettres, telles qu’on le fait avec la commande
CHOICE) n’était possible qu’avec l’aide de programme externe.
Exemple : ce fichier Batch determine si Windows est lancé, si l’on est sous DOS ou
si nous somme en mode DOS réel, juste après avoir quitté Windows :
@echo off
cls
mem /m win | find "K"
if errorlevel 1 goto never
mem /m vmm32 | find "K"
cls
if errorlevel 1 goto dosmode
goto doswin
:never
echo La machine n'a pas encore demarre sous
Windows.
goto done
:doswin
echo Windows est actuellement lance.
goto done
:dosmode
echo Windows a deja ete lance mais vous avez
redemarre en mode MS-DOS
:done
Vous pouvez faire mieux ! Le programme DEBUG, permettant entre autres d’afficher
l’état de la mémoire, peut être utilisé pour calculer la taille de mémoire disponible sur
un disque, etc… Néanmoins, ces solutions s’avèrent peu pratiques, lourdes à mettre
en œuvre et plutôt lentes.
• http://www.ericphelps.com/batch/
• http://home7.inet.tele.dk/batfiles/
• http://www.fpschultze.de/batstuff.html
• http://www.cableyorkton.com/users/gbraun/batch/
• http://www.merlyn.demon.co.uk/batfiles.htm
• http://www.cybertrails.com/~fys/index.htm
Pour finir…
J'espère que vous avez suivi ce bref tutoriel avec plaisir, et que cette initiation à la
programmation en langage Batch ne vous a pas parue trop compliquée.
Si vous remarquez des erreurs, ou pensez que des compléments sont nécessaires,
merci de me contacter (rabusier@aol.com)
Bonne continuation !
Rabusier