Vous êtes sur la page 1sur 90

Formation Batch www.astase.

com
Page 1/90








Formation la programmation Batch
Par Adrien REBOISSON http://www.astase.com

Quatrime dition

Attention : ce tutoriel a ete a l`origine ecrit pour les personnes possedant Windows 95,
Windows 98, ou Windows Me. L`integration sous Windows NT etant diIIerente (le terme
Windows NT regroupant Windows NT, Windows 2000, ou Windows XP), nous vous
conseillons si vous possedez Windows NT de lire ce tutoriel sans oublier l`annexe II qui
detaille les diIIerences majeures entre l`integration Batch sous les distributions standard et les
distributions NT de Windows.























Formation Batch www.astase.com
Page 2/90
Table des matires



I] Introduction 3

II] Les bases de la programmation Batch 10

III] Variables et paramtres 17

IV] Sauts, boucles 31

V] Excution conditionnelle 34

VI] Boucles FOR 38

VII] Redirections 42

VIII] Appel d'autres fichiers Batch 48

IX] Travail avec ERRORLEVEL 49

X] Tches dadministration courantes 51

Dtails sur certaines fonctionnalits de PowerBatch

XI] La compilation 58

XII] Les bordures 60

XIII] 5 autres fonctions de PowerBatch 63

XIII] Programmation avance 66

ANNEXE I] Lintgration MS-DOS sous Windows 69

ANNEXE II] Batch sous Windows NT 76

ANNEXE III] Mots cls ou notions connatre abords dans ce tutoriel 86



Ce tutoriel n'a pas pour vocation de remplacer un livre ddi la
programmation Batch, mais surtout d'initier le programmeur novice ou
ladministrateur peu habitu ces techniques. Merci de ne pas hsiter me
signaler toute incohrence, erreur, ou suggestion propos de ce document via
http://www.astase.com/forums. Je cherche galement toute personne disponible
pour tendre ce document ou dvelopper certaines parties, etc

Formation Batch www.astase.com
Page 3/90
1) Introduction

Basiquement, un fichier Batch n'est rien de plus qu'un fichier texte contenant des
commandes MS-DOS, et possdant le suffixe ".bat".

Si vous ne connaissez pas MS-DOS ou n'avez jamais entendu parler de
Autoexec.bat, passez votre chemin : en effet, la programmation Batch ncessite une
connaissance minimum de l'environnement DOS.

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. Nanmoins, 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 rpter toujours la mme srie de
commandes. titre d'exemple, nous pourrions voquer le changement de rpertoire
et peut-tre aussi la commande FORMAT qu'on fait souvent suivre de la commande
CHKDSK pour vrifier si la disquette a bien t formate.

Exemple :

Imaginons un fichier batch contenant les commandes suivantes :

cd \
cd C:\TOOLS
qmail -z:"default.txt"

Cela aurait le mme effet que si vous tapiez sous DOS les commandes suivantes :

C:\Chemin> cd \ [Entre]
C:\> C:\TOOLS [Entre]
C:\TOOLS> qmail -z:"default.txt" [Entre]

L'intrt des batch est donc d'automatiser des tches rptitives effectues sous
DOS.

Les fichiers batch sont donc trs faciles crer 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 lgre par rapport d'autres programmes, ce qui
facilite leur transfert sur diffrents disques et supports de stockage.






Formation Batch www.astase.com
Page 4/90
Cependant

- Le langage Batch n'est pas compil, il est interprt par COMMAND.COM
ce qui rend plus lent l'excution de programmes batch par rapport des
applications crites directement en langage machine,

- Les fichiers Batch sont directement ditables, donc votre code n'est pas
"protg" la copie par d'autres programmeurs,

- Enfin, et surtout, des oprations lmentaires comme le traitement de
chanes de caractres, d'oprations mathmatiques, etc n'existent pas
sous DOS, ce qui implique l'usage de programmes externes (s'ils ont t
crs, selon les cas).


2) Cration de votre premier Batch

Un fichier Batch tant la base un fichier texte, vous pouvez crer vos batchs avec
nimporte quel diteur de texte.
Attention : un fichier batch est un fichier texte brut (*.txt) sans formatage
particulier (gras, italique, soulign). Personnellement, je trouve inutile dutiliser un
programme aussi lourd que Microsoft Word pour crire un minuscule bout de fichier
ASCII ! Prfrez le bon vieux Notepad (bloc-note Windows) ou le simpliste mais
nanmoins utile EDIT sous DOS, si vous tes puriste

Si vous dbutez ou si vous souhaitez gagner du temps, je ne peux que vous
conseiller dutiliser PowerBatch, un programme que jai moi-mme crit et qui facilite
le test et le dboguage de vos batchs. Ce tutoriel est plus ax sur lcriture de vos
Batchs avec PowerBatch, mais le langage tant le mme que vous utilisiez Notepad
ou PowerBatch, ce tutoriel pourra tout de mme vous aider dans le cas o vous ne
souhaiteriez pas utiliser mon application.
PowerBatch est disponible sur http://www.astase.com.

Prenons le cas simpliste ou vous souhaitez lister les fichiers DLL du rpertoire de
Windows (C:\WINDOWS). Vous entreriez sous DOS :


C:\Chemin> cd \ [Entre]

C:\> cd WINDOWS [Entre]

C:\WINDOWS> DIR *.DLL [Entre]


Il vous suffit de taper dans un fichier texte les commandes prcdentes, comme si
vous les entriez sous le prompt MS-DOS :

Formation Batch www.astase.com
Page 5/90

Facile, non ? La rdaction de votre Batch est termine.
notre stade, nous avons cr un fichier texte il faut maintenant le transformer en
Batch. L aussi, pas trop de difficults : il suffit de changer son extension en .bat
sous Windows. Dans notre exemple, test.txt devient donc test.bat.

Maintenant, il ne vous reste plus qu tester votre Batch !

Un fichier Batch sexcute sous MS-DOS. Si vous tes sous MS-DOS, il vous suffit
dappeler le fichier dans la ligne commande. Si vous tes sous Windows, cest plus
simple puisquil suffit de double-cliquer sur licne du Batch pour que celui-ci souvre
dans une console MS-DOS (Une parfaite simulation du DOS par Windows), et ne
sexcute aussitt :


Que sest-il pass ? Que vous soyez sous Windows ou sous MS-DOS, cest le mme
processus : le fichier batch est transmis linterprteur COMMAND.COM, qui
analyse chaque ligne du batch et excute les commandes rencontres.

Formation Batch www.astase.com
Page 6/90
Comme vous pouvez le constater, la diffrence avec dautres programmes Windows
est de taille : alors que les excutables normaux sont des fichiers binaires
constitus de macro-instructions destins directement au processeur, les fichiers
batchs contiennent les commandes DOS telles quelles , ce qui explique la
ncessit dun interprteur pour traduire les commandes au processeur ; cest le
rle de COMMAND.COM il ny a donc pas besoin de compiler le code.

Si la fentre se ferme automatiquement sans vous laisser le temps de
visualiser son rsultat, rajoutez la commande PAUSE la fin de votre
batch. Mme si vous ne comprenez pas encore cette commande, sachez que
celle-ci demande une validation clavier avant de terminer le programme, ce qui
vous laissera le temps de visualiser le contenu de la fentre.

Comme dit auparavant, les Batchs ont t conus et sexcutent sous MS-DOS. Le
terme MS-DOS rappelle pour certains la prhistoire de linformatique moderne et
peut conduire un dsintrt total en pensant que le DOS est un systme obsolte
et dsormais enterr , qui ne mrite de nos jours plus grand intrt.

Dun ct cest vrai : depuis lavnement des OS graphiques comme Windows, MS-
DOS est en phase de dclin et est de plus en plus abandonn, tant par les
dveloppeurs que les utilisateurs. Certains utilisateurs des dernires versions de
Windows ignorent mme jusqu lexistence du DOS !

Et pourtant, si le DOS part entire na pas grand intrt, la cohabitation MS-
DOS/Windows est toujours de nos jours intressante. Cherchez un langage simple
pour automatiser vos oprations sous Windows : le systme Batch est l !
Mme sous Windows, et ce grce au DOS, vous pourrez automatiser la plupart de
vos oprations. Aprs la lecture de ce tutoriel, vous pourrez mme je lespre,
dvelopper de petits programmes complets et complexes.

Pour aborder un tout autre point certains peuvent se poser la question : Les fichiers
batchs peuvent tre dangereux pour mon systme ? A priori, les fichiers Batch ne
sont pas plus dangereux que nimporte quelle application DOS ou Windows. En plus,
il suffit dditer le fichier pour visualiser son code et se rendre directement compte de
la dangerosit potentielle de certaines commandes. Il convient toutefois de rester
prudent avec les fichiers batchs de provenance non sr (en pice jointe transmise
par e-mail par exemple). Etant donn quune seule commande peut dtruire votre
systme (ou lendommager fortement le cas chant), je vous conseille dditer tout
fichier Batch non sr avant lexcution afin de vous rendre compte par vous-
mme de la dangerosit de ceux-ci.








Formation Batch www.astase.com
Page 7/90
3) Utilisation de PowerBatch

Ralisons le Batch crit plus haut dans le bloc note avec lapplication PowerBatch.
Dmarrez PowerBatch en double-cliquant sur son icne ou via les raccourcis
implants dans le menu Dmarrer.

PowerBatch prsente de nombreux avantages pour la ralisation de fichiers Batchs
dont :

Affichage des diffrentes lignes dans le Batch,

Test rapide des fichiers envois simplifis des paramtres,

Support du format Batch natif (distinction des commandes, enregistrement
direct en *.bat),

Insertion automatise des commandes les plus frquentes,

Nombreux assistants de cration de commandes,

Dbogueur intgr,

etc


Au lancement, PowerBatch affiche une fentre similaire (lgrement diffrente
selon les versions) :



Formation Batch www.astase.com
Page 8/90
Dans la zone de texte, entrez les commandes prcdemment stockes dans le
fichier texte cr avec Notepad :

CD \
CD WINDOWS
DIR *.DLL

Sauvegardez votre Batch via le menu Fichier. Pour tester votre Batch, il vous suffit
daller dans le menu Programme , Tests , Du fichier courant , ou bien de
presser simplement la touche F9.

Le programme est test, puis PowerBatch vous redonne la main.

Pour tester vos commandes, utilisez le sous menu Console MS-DOS du menu
Programme . Cela affiche la console DOS afin que vous puissez tester vos
commandes avant de les introduire dans vos batchs.

PowerBatch propose un support graphique au compilateur Bat2Exec. Pourquoi
compiler vos batchs, puisque COMMAND.COM est l pour les interprter ? Pour
protger votre code, accrotre la vitesse dexcution, utiliser le format binaire moins
altrable que le format ASCII Le compilateur Bat2exec transforme donc vos batchs
en programme binaires dextension *.COM . Pour plus dinformations, consultez le
chapitre Compilation de vos Batchs dans ce manuel.

PowerBatch comporte des assistants, placs dans le menu Assistants , dont :

Le crateur de copies qui vous permet de crer le code correct pour
une utilisation de XCOPY ou XCOPY32,

Le crateur de bordures vous permet de crer vos encadrements
dans vos batchs.

LAssistant dentre clavier permet de crer des demandes au
clavier, ou de crer facilement des menus.

LAssistant conversion en noms courts qui permet de transformer
des noms de chemin Windows en noms au format court (format MS-
DOS).

Les Convertisseurs Ansi>OEM / OEM->Ansi qui permettent de
convertir les jeux de caractres DOS vers Windows et rciproquement.


Vous pouvez galement utiliser lassistant de recherche des erreurs (dans le mme
menu). Celui-ci dtectera les sauts incorrects dans votre Batch et les labels inutiliss
(ceux-ci seront abords plus loin dans le batch).

Le menu Fichier>Nouveau>Autres contient de nombreux exemples de fichiers
Batch que vous pouvez rutiliser.
Formation Batch www.astase.com
Page 9/90


Le menu Commandes regroupe des commandes DOS ou Batch frquentes et
vous permet ainsi de les insrer dans vos Batchs en conservant leur syntaxe propre.

Le menu Fichier contient des formats dexportation particuliers pour vos batchs,
permettant de conserver la mise en forme de ceux-ci dans dautres applications ou
dans dautres systmes dexploitation. Une section de ce tutoriel est consacre
cette fonction.

Un inspecteur de variables denvironnement pour visualiser les variables dclares
sur votre systme.


Lutilisation de PowerBatch est dtaille dans le fichier daide accessible dans
PowerBatch en pressant F1. Ce tutoriel va maintenant se concentrer sur la
programmation Batch en tant que tel, et suppose que vous savez maintenant Crer,
Ouvrir, Sauvegarder, et Tester vos batchs avec PowerBatch. Vous pouvez
maintenant crer vos fichiers avec PowerBatch ou Notepad mais dans ce dernier
cas vous pourrez passer certains chapitres traitant de certaines fonctionnalits de
PowerBatch.




















Formation Batch www.astase.com
Page 10/90
2) Les bases de la programmation Batch

Un fichier Batch nest pas constitu uniquement de commandes DOS. Il existe, et
cest lintrt de celles-ci, des commandes* spcifiques aux fichiers batch. Voici les
plus simples et les plus courantes.

Lcho

Le terme Echo a plusieurs significations. Selon quil est utilis, on peut parler de
commande de sortie, proprit daffichage ou commande de dsactivation ou
dactivation. Cest une notion simple mais trs souvent utilise dans la
programmation Batch.

Lorsque vous crez un fichier Batch, vous entrez des commandes MS-DOS la
suite. Lorsque vous excutez le batch, il apparat lcran sous une forme un peu
spciale : il est affich dabord la commande comme si vous laviez tape vous
mme sous DOS, puis son rsultat. Par exemple, si vous entrez un batch simpliste
contenant lunique commande DIR c:\*.BAT, et que vous lexcutez, il
apparat lcran un rsultat du type:


En haut de lcran apparat la commande, comme si vous laviez vous mme tape
(DIR c:\*.BAT), puis son rsultat en bas (le catalogage des fichiers Batch la racine
du disque C:\ - celui-ci tant le mien, vous naurez pas le mme rsultat que cette
capture dcran !)

Maintenant imaginez que vous souhaitez simplement afficher le rsultat de la
commande. Il va donc falloir trouver un moyen de masquer la ligne affichant la
commande avant son excution.

Pour arriver cela, vous pouvez utiliser la commande echo off qui dsactive
lcho. Cest en effet par echo que la fonction daffichage avant excution est
appele.
Formation Batch www.astase.com
Page 11/90

Si vous rcrivez votre batch en lui ajoutant son dbut echo off , cela donne :

Echo off
Dir c:\*.bat

Et si vous lexcutez, vous aurez un rsultat du style :


Seul le rsultat de la commande dir C:\*.BAT a t affich a lcran.

Dans votre Batch, lcho est dsactiv lorsque COMMAND.COM rencontre echo
off. Ce dernier nest pas ractiv tant que la commande inverse : echo on, nest
pas rencontre.

Pourquoi, puisque lcho est dsactiv via la commande echo off , cette
dernire est-elle justement affiche en haut de lcran ? Et bien tout simplement car
MS-DOS affiche dabord, et excute ensuite. Rencontrant echo off , il laffiche,
puis dsactive aprs lcho. Nous verrons ultrieurement comment contourner cette
fonction.

Un autre moyen pour dsactiver lcho est de faire prcder la ligne dont seul le
rsultat doit tre affich du signe @ .

Ainsi, vous pourriez transformer le batch

Echo off
Dir c:\*.BAT

en

@dir *.BAT



Formation Batch www.astase.com
Page 12/90
Bien sr, si notre batch comportait plusieurs lignes, il faudrait rajouter autant de
@ devant chaque ligne quil aurait de lignes ou lon veut dsactiver lcho.
Autant, dans ce cas-l, utiliser une seule fois en dbut de Batch la commande
echo off .

Cette notion dcho local doit tre saisie, car la majorit des programmeurs
Batchs prfrent le dsactiver par conomie de place et souci de
comprhension (cela vite que beaucoup trop de lignes incomprhensibles
pour le nophyte soient affiches lcran) : vous rencontrerez donc souvent
les commandes prcdemment cites.

Un dernier point sur lcho : la commande @echo off . Il sagit d une
combinaison du signe @ et de echo off . Quel est son intrt ? Et bien cela
vite dafficher echo off en dbut de batch comme il apparat dans la dernire
capture dcran. La dsactivation de lcho est elle mme masque via @ . Vous
rencontrerez donc trs souvent cette combinaison.

Vous pouvez ractiver lcho tout moment dans le Batch en insrant la commande
inverse echo on .

Commenter son code

Comme dans tout langage de programmation, il est essentiel de commenter son
code :

Cela accrot la clart du code et le rend comprhensible par nimporte quel
collaborateur,

Cela vous permet vous-mme de vous reprer dans votre code si celui-ci est
eu peu complexe,

Cela facilite votre relecture si par exemple vous navez pas travaill sur un
code depuis longtemps.

Pour introduire un commentaire, utilisez linstruction REM, puis entrez une ligne de
texte, par exemple :

REM Catalogage de C:\TEXTES
DIR C:\TEXTES

La ligne prcde de REM ne sera pas excute, mais tout de mme affiche
lcran si lcho est activ. Dans tous les cas, la prsence de commentaires ne gne
en aucun cas lexcution de votre code ; cela alourdit nanmoins lgrement votre
fichier.




Formation Batch www.astase.com
Page 13/90
Afficher du texte lcran

Il peut tre utile, dans certains cas, dafficher un texte lcran, par exemple pour
informer lutilisateur de ce que fait le Batch.

Vous utiliserez la commande echo . Encore elle !
Ici, son usage est diffrent. Si cette instruction nest pas suivie de off ou de
on , elle permet dafficher un texte lcran.
En ralit, ECHO est utilis pour faire sortir tous types de donnes : par dfaut le
texte est envoy lcran, mais vous pouvez lenvoyer sur limprimante, dans un
fichier etc Pour linstant, considrons simplement que ECHO permet dafficher un
texte.

Si vous souhaitez par exemple afficher Bonjour lcran, rien de plus simple
puisquil vous suffit dentrer :

Echo Bonjour

Remarquez l'absence de guillemets, par rapport d'autres de langages de
programmation exigeant que les variables littrales soient distingues par ces
derniers.

Si lcho local est activ, le texte sera affich deux fois : une fois prcd de la
commande daffichage echo , lorsque MS-DOS affichera la ligne, une fois sans
echo , lorsque MS-DOS excutera la ligne. Une bonne raison de dsactiver
lcho local par un simple @echo off en dbut de batch !

Voici un petit batch qui mle commentaires, messages lcran et commandes
DOS :

@echo off
REM Dsactive lcho local
CD C:\WINDOWS
REM Va dans le rep. De Windows
Echo Les fichiers WFM vont tre effaces !
DEL *.WFM
Echo Termin !

Afficher des lignes vides : attention, vous ne pourrez pas afficher des lignes vides
en entrant juste echo . En effet, dans ce cas, vous dcouvrirez un 3 aspect de
echo : sil nest suivi de rien, MS-DOS affiche ltat de ECHO : ON sil est activ,
OFF sil est dsactiv. Par consquent, il existe une combine pour afficher une
ligne vide : il faut entrer echo.






Formation Batch www.astase.com
Page 14/90
Exemple :

@echo off
echo Tentative infructueuse pour afficher une ligne vide
REM MS-DOS va afficher ltat de ECHO car on a oubli le .
aprs echo :
Echo
Echo Affiche maintenant une ligne vide :
Echo.
Echo Termine.


qui donne :


Rsum :

Vous avez dcouvert 3 aspects de ECHO :

Pour afficher du texte, on utilise ECHO suivi du texte afficher,
Pour activer ou dsactiver lcho local, on utilise ECHO ON ou ECHO
OFF
Si lon veut afficher ltat de lcho (actif / non actif), on utilise ECHO
sans autre paramtre.

Sous MS-DOS ou sous Windows, lcho est activ ou dsactiv uniquement pour le
batch en cours dexcution. Cette proprit locale est propre chaque batch.
Lcho tant par dfaut activ, si vous souhaitez le dsactiver pour tous vos batchs, il
faudra entrer dans chacun deux echo off ou @echo off


Les caractres spciaux

Sil y a bien un point important sur lequel il faut tre vigilant, cest bien sur celui des
caractres spciaux. Ceux-ci dsignent notamment tous les caractres accentus de
notre langue ainsi que les signes spciaux %,<,>, |, car ils correspondent des
sigles bien prcis qui pourraient entraner de multiples erreurs sils taient insrs
sans raison particulire dans un batch

Formation Batch www.astase.com
Page 15/90
Pour le cas des accents, il sagit simplement dun problme de jeu de caractres :
MS-DOS utilise le jeu OEM et Windows le jeu ANSI. Ainsi, pour afficher correctement
un accent, soit vous devrez taper votre Batch directement sous DOS, soit devrez
passer sous Windows par un logiciel pouvant effectuer une conversion OEM vers
ANSI. Le plus simple est carrment de sen passer.

Pour les caractres > , < , | , % , & , ils correspondent des
lments du langage qui ne doivent pas tre utiliss sans raison. Si vous avez
absolument besoin de les utiliser, faites les toujours prcder du caractre
dchappement ^ , qui demandera COMMAND.COM de ne pas les interprter
comme commandes mais juste de les afficher. Etant donner lalourdissement
consquent de votre code d linsertion systmatique de ce caractre, l aussi, le
plus simple et de sen passer.

Effacer lcran

Pour effacer lcran (du moins le texte de la console DOS si vous travaillez sous
Windows). Il existe une commande bien connue par les habitus du Basic : CLS,
pour Clear The Screen effacer lcran.

Imaginez une commande produisant des rsultats textuels importants : pour ne pas
noyer lutilisateur sous un flot de caractres quelconques, faites suivre
linstruction incrimine de CLS. Le texte sera immdiatement effac, le prompt DOS
revenant au coin haut gauche de lcran.

Si vous travaillez sous DOS, il peut tre utile de commencer tous vos batchs par CLS
pour effacer lcran sans doute dj occup par de nombreuses lignes de
commandes.

Sous Windows, si un batch se termine par CLS, Windows fermera automatiquement
la fentre (par dfaut sous les versions NT et XP de ce systme). Cela est logique :
pourquoi continuer dafficher lcran une ligne vide, nettoye par CLS, donc
exempt dinformations pour lutilisateur ?

Faites une pause !

la diffrence de CLS, instruction utilise pour nettoyer lcran des informations
devenues inutiles, il existe une commande permettant de laisser des donnes
lcran tant que lutilisateur ne presse pas une touche. Lexcution est ainsi
interrompue, laissant le temps lutilisateur de visualiser le rsultat dune
commande, un texte dinformation, un message davertissement, etc.







Formation Batch www.astase.com
Page 16/90
Il suffit pour cela dentrer linstruction pause dans votre Batch. Lorsque linterprteur
rencontre linstruction pause , il apparat lcran :

Si vous souhaitez simplement attendre lappui dune touche sans afficher le message
classique gnr par MS-DOS, il suffit dentrer :

Pause>nul

Le rle de >nul sera abord ultrieurement. Comparez-le simplement votre
stade un trou noir supprimant tous les messages normalement mis par la
commande sa gauche.

Alors quun CLS en fin de fichier Batch force Windows fermer la console DOS, un
pause en fin de Batch fait tout le contraire : il empche la fermeture de la fentre
tant quune touche nest pas presse. Il peut donc tre utile de terminer vos batchs
par cette instruction si vous possdez des OS comme Windows XP qui ferment
automatiquement les batchs une fois excuts.
Pour sortir dun Batch en pause (ou en excution), pressez la combinaison de touche
CTRL+C (Break)

Avec le contenu de ce chapitre, vous pouvez rdiger de petits batchs utilisant les
notions suivantes :

Contrle de lcho local par @echo off ou echo on ,
Effacement de lcran par CLS,
Attente de lappui sur une touche avec pause,
Textes divers en utilisant echo .

tout cela, bien sr, abondamment comment par des REM !










NOTE:

* : MS-DOS n'est pas sensible la diffrence entre les majuscules et les minuscules
pour les commandes, que vous criviez echo ou Echo, ou bien encore ECHO ou
EcHo, le rsultat sera le mme.


Formation Batch www.astase.com
Page 17/90
3) Variables et paramtres


Comme dans tous langage de programmation, il existe un moyen de stocker des
informations dans un emplacement de la mmoire de votre ordinateur. A cet
emplacement est associ un nom que vous dfinissez, afin de manipuler facilement
ces donnes.

Gnralits

Vous rencontrerez des variables sous plusieurs formes :

Lors de la lecture : cest--dire lorsque vous examinerez et utiliserez le
contenu dune variable,

Lors de lcriture : cest--dire lorsque vous modifierez le contenu dune
variable.

Dans tous les cas, la casse, cest--dire la diffrence majuscules/minuscules nest
pas discriminatoire pour le DOS : il considre par exemple la variable Abc et aBC
comme identiques. Par compte, il est sensible la casse du contenu des variables.
Cest--dire que lorsque vous aurez tester le contenu dune variable si vous cette
variable se nomme par exemple Nom et contient frederic MS-DOS dtectera
une diffrence si le test se porte sur FREDERIC puisque le premier est en minuscules
et le second en majuscules.

Variables denvironnement

Une variable denvironnement correspond au nom du seul type de variable que
lon peut utiliser pour stocker des donnes. Elle reprsente une valeur accessible n
importe o et n'importe quand dans l'environnement DOS du processus qui la pose.

On peut simplifier en classant les variables denvironnement en 2 catgories :

- Les variables denvironnement persistantes qui sont dfinies dans
Windows (via Autoexec.bat ou le panneau de configuration) qui sont
accessibles tous les processus,
- Les variables denvironnement locales que vous dfinissent dans vos
Batchs : la variable sera uniquement accessible au processus qui laura
dfinie ainsi qu ses enfants , c'est--dire les processus quil crera
ventuellement.

A chaque fois quun nouveau processus est cre (par exemple quand votre batch en
appelle un autre), celui-ci hrite des variables du processus crateur.
Si vous souhaitez modifier les variables hrites du processus crateur, sachez que
celles-ci ne seront pas rpercuts celui-ci : les modifications seront uniquement
locales votre processus.

Formation Batch www.astase.com
Page 18/90
Pour afficher les variables denvironnement persistantes (c'est--dire, on le rappelle,
celles qui sont dfinies avec Windows et publiques tous les processus), tapez
simplement dans linvite de commande la commande set ce qui donne par exemple
:

Nous voyons donc que 8 variables d'environnement sont dfinies sur cet ordinateur :
TMP, TEMP, PROMPT, WINBOOTDIR, COMSPEC, PATH, WINDIR; et BLASTER.

Sur ces 8 variables, 7 sont dfinis par et pour WINDOWS : TMP (Rpertoire
temporaire), TEMP (Rpertoire Temporaire), PROMPT (Invite du DOS),
WINBOOTDIR (Dossier de dmarrage de Windows), COMSPEC (Adresse de
l'interprteur de commandes), PATH et WINDIR (Dossier de Windows).

Introduction a la cration de variables

Nous allons crer des variables, auxquelles nous assignerons des valeurs.
A la cration de celles-ci, il faudra toujours spcifier une valeur initiale. Ainsi, la
variable Dossier4 peut tre affect la chane de caractre :
C:\WINDOWS\COMMAND\EDB\MAKECAB .

Utilisez la commande SET, qui requiert la syntaxe suivante :

Set NomDeVariable=Valeur

Lorsque linterprteur rencontre SET, il analyse ensuite le nom de la variable sa
droite, puis les donnes droite du signe gal. Il associe ensuite un espace de votre
mmoire vive la variable cre, remplissant cette mmoire rserve par les donnes
trouves. Pour identifier cette variable, il lui associe enfin un nom, celui rencontr
la droite de SET.

Par exemple, vous souhaitez associer la variable SysVer le texte Windows 95 .
Entrez dans la console DOS :

Set SysVer=Windows 95

Vous pouvez retaper Set tout seul pour voir la liste des variables et vrifier que
celle-ci a bien t ajoute avec les autres.
Encore une fois, comme votre variable na pas t dfinie comme variable
persistante, la fermeture de la console celle-ci sera efface de la mmoire.



Formation Batch www.astase.com
Page 19/90
Erreur despace denvironnement insuffisant

Il arrive parfois que Windows 9x ne puisse enregistrer la variable et affiche le
message espace denvironnement insuffisant .

Olaf COPO, sur microsoft.public.fr.windows98, rpond cela :

L'espace d'environnement est une notion hrite du DOS, et il est probable
que votre solution rside dans le bon vieux CONFIG.SYS qui, n'en dplaise
certains, est encore important sous Windows, de mme qu'AUTOEXEC.BAT.
Cet espace mmoire comprend les variables PATH, COMSPEC et celles dfinies
ventuellement par SET. Sa limite standard est, si elle n'a pas chang avec
les versions 7.x en vigueur avec W9x, de 256 octets, desquels il faut
dduire les variables d'environnement dj dfinies sur votre machine.
Ce qui fait qu'on ne va pas trs loin...

Pour masquer ce message et rsoudre les problmes il faut donc augmenter la taille
de la mmoire d'environnement :

- Ouvrez CONFIG.SYS avec Notepad (fichier gnralement plac dans
"C:\config.sys")
- Insrez la ligne , ou cherchez-l pour la modifier :

SHELL=C:\COMMAND.COM C:\ /e:1024 /p

Cette syntaxe suppose qu'une copie de COMMAND.COM se trouve dans la racine
du disque C:\. Elle peut tre modifie selon vos besoins.

/e: dfinis la taille de l'environnement (ici 1024 octets)
/p excute AUTOEXEC.BAT

Vous pouvez porter la taille de l'environnement 2048 si des problmes surviennent
toujours.

Normalement, ce problme ne devrait pas survenir sous Windows NT.

Lire et utiliser les variables

Pour lire le contenu dune variable, on lencadre de deux % . Ces deux signes
indiquent linterprteur quil doit remplacer le nom de la variable par son contenu.
Si la variable nexiste pas, aucune erreur nest affiche, mais la variable est
remplace par une chane de caractres nulle.

Soit nom une variable contenant un nom afficher. On pourrait utiliser :

Echo Bonjour, %nom% !

Si la variable nom contient une valeur, celle-ci remplace donc dans le batch la
chane %nom% . Si par exemple, cette variable contient le texte Mathieu ,
alors, linterprteur verra la ligne suivante :
Formation Batch www.astase.com
Page 20/90

Echo Bonjour, Mathieu !

et affichera lcran Bonjour, Mathieu !.

Cette variable peut-tre insre nimporte ou dans votre batch, combine nimporte
quelle commande. Si la variable rep contient une adresse du type
C:\DOSSIER1 , vous pourrez lutiliser avec dautres commandes comme :

@echo off
cls
echo Cration du repertoire %rep%
mkdir %rep%
echo %rep% a ete cree.

Ce qui donnera pour linterprteur les lignes suivantes, quil excutera de suite (si
rep contient bien C:\DOSSIER1 ) :

@echo off
cls
echo Cration du repertoire C:\DOSSIER1
mkdir C:\DOSSIER1
echo C:\DOSSIER1 a ete cree.

Faites bien attention si la variable sur laquelle vous travaillez nest pas vide. Dans les
2 cas suivants pris en exemple, si nom est vide, cela gnre des ractions plutt
inattendues :

Echo %nom%
Donne : ECHO est actif , puisque linterprteur voit simplement la
commande ECHO suivie de rien du tout il affiche donc ltat de lcho.

Mkdir %nom%
Donne Paramtre manquant , puisque linterprteur voit encore la commande
mkdir seule sans paramtres.













Formation Batch www.astase.com
Page 21/90
Manipulation des variables

Exemple de cration de variable - Nous souhaitons dfinir une variable
"VersionWindows" contenant 98 SE

Nous allons crire dans un Batch :

Set VersionWindows = 98 SE

.puis lexcuter ; il semble que rien ne se passe : normal, cette commande ne
produit pas de rsultat visible l'cran.

Pour tester si notre ajout a t pris en compte, il suffit dajouter dans le batch "set"
pour voir si notre variable a t ajoute la liste de celles dj dfinies sur
lordinateur.

Dans notre cas, il apparat :

Notre variable a bien t ajoute. Nous pourrions lutiliser dans la suite du batch, par
exemple :

Echo La version de Windows installee est %VersionWindows% .

Ajout de caractres Vous avez associ SysVer la chane Windows 95 .
Imaginons que vous souhaitiez ajouter - 32 bits la fin de la chane afin que la
variable contienne un certain moment Windows 95 32 bits .

La premire solution est simple : il faut redfinir entirement la variable dans le
batch, sous forme, par exemple :

Set SysVer=Windows 95 32 bits

Il y a-t il une solution plus lgante , plus pratique ? Bien sr ! Vous pouvez
entrer :

Set Sysver=%sysver% - 32 bits

Pour MS-DOS, cest simple : %sysver% sera remplace par sa valeur (rappelez vous
quelle contient dj des donnes, en loccurrence Windows 95 ) avant que la
ligne soit excute.

Formation Batch www.astase.com
Page 22/90
Cela donnera donc pour le DOS :

Set Sysver=Windows 95 - 32 bits

Cela a le grand avantage de fonctionner quel que soit le contenu de la variable. Par
exemple, supposons que votre batch contienne la lettre dune unit logique de votre
PC dans la variable UNIT. Pour la transformer en chemin daccs comprhensible, il
faudra lui ajouter :\ . En effet, si UNIT contient c , il faudra ajouter :\ pour
avoir ladresse valide C:\ . Avec cette technique, vous pourrez rajouter facilement
:\ au contenu de la variable, quel que soit la lettre du lecteur. Vous pourrez donc
taper :

Set unit=%unit%:\


Suppression dune variable De la mme manire que SET x=y dfinit la variable
x avec le contenu y, on peut tre amen vouloir dtruire une variable (ce qui
dtruira naturellement sa valeur associe). Pour nettoyer la mmoire, ou bien
vous serez peut-tre amen utiliser SET sous cette forme :

Set NomDeVariable=

Par exemple, pour supprimer de la mmoire la variable Folder , on tapera :

Set Folder=


Variables remarquable Certaines variables sont toujours prsentes lorsque vous
utilisez DOS alors que Windows est install sur votre machine. Cest le cas de la
variable Windir, qui pointe toujours vers le rpertoire de Windows.

Imaginons par exemple que vous souhaitez effacer sur plusieurs postes le Dmineur
fourni avec Windows (le nom de fichier est Winmine.exe , situ dans le dossier de
Windows). Vous pourriez entrer dans un batch la ligne :

DEL C:\WINDOWS\WINMINE.EXE

Mais attention ! Si C:\WINDOWS est le rpertoire dinstallation par dfaut, certaines
configurations possdent un rpertoire diffrent, du style C:\WIN98, C:\WIN2K ou
bien carrment C:\MONWINDOWS, etc Pour viter les erreurs, vous pourriez
utiliser la variable Windir et crire alors votre ligne :

DEL %WINDIR%\WINMINE.EXE





Formation Batch www.astase.com
Page 23/90
De la mme faon, il existe dautres variables pointant sur des rpertoires ou des
fichiers cruciaux de Windows (voir capture dcran ralise plus haut), en voici
quelques-unes :

- TEMP, qui contient le chemin du rpertoire temporaire de Windows,
- COMSPEC, qui pointe vers linterprteur DOS (gnralement
COMMAND.COM CMD.EXE sous NT),
- WINBOOTDIR, qui contient ladresse du rpertoire de dmarrage de
Windows,
- PROMPT, qui contient le texte dinvite,
- PATH, qui contient la liste des rpertoires utiliser pour la recherche des
fichiers (voir plus bas).

Sous Windows NT, de nombreuses autres variables denvironnement sont
prsentes :

- COMPUTERNAME, qui contient le nom de lordinateur,
- HOMEPATH, qui contient le rpertoire de dpart de lutilisateur connect,
- LOGONSERVER, le serveur ayant valid la connexion de lutilisateur,*
- OS, qui contient le type de lOS lanc (Windows_NT)
- NUMBER_OF_PROCESSORS, qui contient le nombre de processeurs de
la machine,
- PROCESSOR_ARCHITECTURE, qui contient le code de larchitecture du
processeur,
- USERNAME, qui contient le nom dutilisateur logu,
- USERDOMAIN qui contient son domaine,
- USERPROFILE qui contient son rpertoire personnel, etc.


Il est recommand dutiliser ces variables le plus que possible pour rendre vos
batchs souples et compatibles avec tous systmes.

Dfinition de variables persistantes

On appelle gnralement variables de session ou variables persistantes des
variables dfinies chaque dmarrage, et dont la prsence est permanente jusqu
lextinction de lordinateur. Par exemple, le logiciel MASM (cit titre dexemple),
rajoute de nombreuses variables de session contenant les dossiers dinstallation, afin
quil puisse traiter des fichiers dans ces dossiers sans manipuler directement ceux-ci.

A) Dfinir une variable persistante sous Windows 9x

Pour crer vos propres variables persistances, ditez AUTOEXEC.BAT, et inscrivez
la ligne de dfinition de variable correspondante. Par exemple, votre rpertoire de
travail est C:\ROMAIN\WIN32\ASM\DEBUG, et vous souhaitez stocker celui-ci dans
la variable Dossier : vous entrerez donc nimporte ou dans Autoexec.bat :

SET Dossier=C:\ROMAIN\WIN32\ASM\DEBUG

Formation Batch www.astase.com
Page 24/90
tout moment, vous pourrez utiliser Dossier pour dsigner votre rpertoire de
travail. Un simple CD %Dossier% sous DOS vous placera dans le rpertoire
correspondant, sans avoir taper une fastidieuse ligne de commande. Idem dans
vos Batchs : vous manipulerez facilement ce rpertoire dans toutes les oprations
sur les fichiers.

Attention : pour que la variable puisse tre dfinie chaque dmarrage, il faut
imprativement que AUTOEXEC.BAT soit chaque fois excut !

B) Dfinir une variable sous Windows NT

1) Ouvrez le Panneau de Configuration, puis litem Systme
2) Cliquez sur longlet Avanc
3) Cliquez sur le bouton Variables denvironnement

Une fentre similaire celle-ci apparat :



La liste du haut prsente les variables denvironnement persistantes pour lutilisateur
(et uniquement lutilisateur logu), la liste du bas pour tous les utilisateurs du poste.

Pour ajouter une nouvelle variable, cliquez sur Nouveau puis renseignez un nom
de variable et une valeur. Vous pouvez galement modifier une variable existante ou
en supprimer une.

Que vous travaillez avec Windows 9x ou Windows NT vous devez redmarrer
votre poste pour enregistrer les changements.




Formation Batch www.astase.com
Page 25/90
Paramtres

Votre batch est assimil un programme. Comme tout programme, il peut recevoir
des paramtres.
On appelle paramtre tous les arguments passs un programme ou une
commande.

Prenons lexemple dun formatage de disquette. Sous DOS, vous pourriez entrer :

Format a:

La simple ligne Format a : fait rfrence un programme (en loccurrence ici
un excutable nomm format.exe ). Et a: est pour lui un paramtre, cest-
-dire une information supplmentaire quil peut lire et traiter.

Les paramtres sont toujours spars par des espaces. Lorsquils sont encadrs de
guillemets, les espaces contenus dans les chanes ne sont pas pris pour des
sparateurs. Lorsque les guillemets sont utiliss ils servent uniquement pour la
transmission mais sont supprims aprs par MS-DOS.

Par exemple :

FORMAT a: /V:MaDisquette /B /C

FORMAT est la commande,
A: est le premier paramtre,
/V:MaDisquette]est le second paramtre
/B est le troisime paramtre,
/C est le quatrime paramtre, etc

Prenons lexemple dun batch qui doit effacer tous les fichiers TMP (*.TMP) dun
dossier. Si le batch est capable de recevoir comme paramtre le rpertoire dans
lequel il doit oprer, on pourra par exemple lappeler sous DOS :

Batch1.bat C:\DEMO

Pour quil supprime tous les fichiers TMP du rpertoire DEMO .

Vous comprenez maintenant lintrt des paramtres : cela introduit une sorte de
modularit et une nouvelle souplesse dans la programmation. On peut crer des
batchs qui sont des sous-programmes , recevant des infos via les paramtres.

Il est important de noter que vous ne pouvez pas sous Windows envoyer directement
des paramtres (le double-clic pour lancer un excutable empche toute frappe
clavier). Cependant, vous pouvez ouvrir une console DOS dans Windows, vous
placer dans le rpertoire souhait, puis lancer lapplication en lui envoyant des
paramtres par la ligne de commande DOS, ou diter un fichier PIF pour cela ces
notions seront abordes ultrieurement.

Formation Batch www.astase.com
Page 26/90
Concrtement, un batch peut recevoir des paramtres directement accessibles via
les variables de %1 %9. Il est possible de dcaler le contenu de ces variables
pour exploiter les autres paramtres reus sil y a plus grce la commande SHIFT
voque plus bas. La variable %0 correspond quant elle au chemin du batch.
Contrairement aux variables classiques, on observe 3 grosses diffrences : on ne
peut pas les modifier, elles ne sont pas encadres par 2 % (seulement prcds
dun seul % ), enfin, elles sont spcifiques pour chaque batch.

Vous pouvez tester cela en crant le batch suivant :

@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 o vous n'envoyez aucun paramtre (vous lancez simplement le fichier),
vous obtenez un rsultat de ce type :

Comme vous le constatez, rien n'apparat la place des %1 %2 %3 et %4 : en effet,
nous n'avons pas envoy de paramtre l'application, c'est donc normal.

Envoyez maintenant 3 paramtres, par exemple "/V" pour le premier paramtre,
"ABC.EXE" pour le second, et "C:\" pour le troisime.

Sous DOS, vous pouvez lancer le fichier en le faisant prcder de son adresse, puis
en envoyant les paramtres, par exemple :

C:\Tests\Monbatch.bat /V ABC.EXE C:\

Vous pouvez procder plus facilement avec PowerBatch :
PowerBatch 5.0 5.5 : Entrez simplement ces paramtres dans la bote de dialogue
affiche juste avant nimporte quel test,
PowerBatch 5.6 et plus : Les paramtres sont dfinis dans la bote de dialogue
Paramtres du menu programme et envoys chaque test.

Rsultat dans les deux cas : le fichier est excut avec les paramtres entrs.

Ce qui donne :
Formation Batch www.astase.com
Page 27/90
Ce qui est ici parfaitement logique.

On a dit que les paramtres taient spars par des espaces. En appelant le mme
fichier batch que celui prcdemment cre et en lui envoyant la ligne Ceci est
lexemple mme dune longue ligne de paramtres , le batch
saucissonnera votre phrase en lui associant un mot pour chaque paramtre.
Cest dire que si votre phrase contient plus de neuf mots il faudra pniblement
dcaler toutes les variables jusqu rcuprer la phrase complte.

Pour outrepasser cette gne et vous assurer que vos paramtres aient une longueur
fixe accents ou pas, encadrez vos longues chanes de guillemets. Ils inhibent les
espaces de la phrase et permettent que celle-ci soit stocke dans une seule variable.
MS-DOS tant compatible avec cette technique, vous pourrez manipuler vos fichiers
avec nimporte quel excutable.

Rien nempche dassocier une variable denvironnement un paramtre. Cela
permettra mme de conserver la valeur du paramtre en dehors du batch qui la fix.
Exemple : supposons que votre batch reoit comme premier paramtre ladresse
dun dossier sur lequel il doit agir.

Vous pourrez entrer :

Set Dossier=%1

Pour manipuler dans votre Batch ce dossier sous un nom plus explicite, ou pour
permettre dautres Batch lutilisation de ce rpertoire.

Pour dcaler les paramtres contenus dans les variables de %1 %9, utilisez la
commande shift. %1 passe dans %0, %2 dans %1 et ainsi de suite... Et %0 est
perdu. Avec shift vous pouvez accder au 11 paramtre : qui est transfr
dans %10. Vous pouvez ainsi appeler shift autant de fois que vous voulez, pour avoir
accs aux paramtres supplmentaires.

Exemple : Le batch suivant copie le dossier C:\Travail vers le rpertoire pass en
paramtre n1 grce XCOPY :

@echo off
echo Sauvegarde de vos fichiers...
Xcopy "C:\Travail" "%1" /D /S /C /L
echo Termine !

Un autre exemple, qui permet dafficher les dossiers dun rpertoire grce une
squence de commande particulire. Cest le dir %1 qui dclenche le listage
des lments contenus dans le dossier pass en paramtre.

Echo off
Echo Voici la liste des repertoires contenus dans %1 :
dir "%1" | grep "<REP>" | tr -s " " | cut -d " " -f 4

Formation Batch www.astase.com
Page 28/90
La variable %PATH%

Vous savez certainement que sous MS-DOS il existe deux types de commandes :
les commandes internes incluses dans linterprteur et les commandes externes
constitus dexcutables placs dans des rpertoires spciaux. Nous allons nous
intresser la manire dont MS-DOS gre le lancement des commandes via la
variable %PATH%.

On rappelle que pour lancer un fichier .EXE, .COM ou .BAT, il n'est pas ncessaire
de prciser l'extension de ces derniers. Par exemple, lorsque vous tapez la
commande FORMAT, vous faites rfrence au programme FORMAT.COM.
Mais comment MS-DOS tablit-il ce lien ? Gnralement, lorsque vous tentez de
lancer un excutable nexistant pas dans le rpertoire courant (et gnralement il ny
a aucun programme de ce nom dans le rpertoire courant !), le DOS renvoie un
message du type 'ts32' n'est pas reconnu en tant que commande interne ou
externe, un programme excutable ou un fichier de commandes. . Par consquent,
on peut en dduire que comme il ne trouve pas lexcutable dans ce rpertoire, MS-
DOS va chercher ailleurs, dans dautres dossiers, sil ne peut trouver le fichier
demand.

Cest le rle de la variable PATH. Elle contient tous les rpertoires que MS-DOS doit
explorer si on lui demande dexcuter un fichier nexistant pas dans le rpertoire
courant. Ainsi, si vous tapez ts32 dans linvite, le DOS va chercher dans le
rpertoire ouvert, puis dans le premier rpertoire contenu dans PATH, puis dans le
second jusqu que tous les rpertoires de PATH aient t explors. Si aucun
fichier BAT, COM ou EXE na t trouv ce stade, MS-DOS affiche le message
derreur inclus ci-dessus : xxx nest pas reconnu en tant que commande

Path est une variable denvironnement (persistante, bien sr !) dont le contenu
peut tre classiquement affich par un echo %PATH% . Voil un exemple possible
de rsultat :



Vous remarquez que tous les chemins sont spars par des points virgules. Donc,
lorsque sur le poste dont est tir la capture on tape une commande, si un fichier du
mme nom nexiste pas dans le rpertoire courant, MS-DOS va parcourir tous les
chemins affichs ci-dessus jusqu trouver (ou non) lexcutable demand.

Vous remarquerez que les trois premiers chemins ont t insrs par et pour
Windows puisquils demandent dabord chercher des commandes dans
C:\WINDOWS, C:\WINDOWS\system32 et C:\WINDOWS\system32\WBEM.Les
autres adresses ont t insrs par des logiciels installs, soient automatiquement,
soit en demandant lutilisateur de modifier la variable PATH manuellement.

Formation Batch www.astase.com
Page 29/90
Sachez que MS-DOS nexplore pas rcursivement les dossiers contenus dans
PATH : les sous-dossiers des dossiers inclus ne seront pas traits sauf si vous les
insrez eux aussi leur tour dans PATH.

3) Ajouter un chemin d'accs la variable PATH

Vous aurez parfois modifier la variable PATH pour y ajouter des dossiers. Etant
donn que PATH est une variable persistante , vous devrez, si vous tes sous
Windows 9x, manipuler AUTOEXEC.BAT ; dans le cas chant, la modifier dans le
panneau de configuration Windows.

Sous Windows 9x ou dans un Batch

Cette manipulation est valide si vous voulez modifier le PATH uniquement sous
Windows 9x, ou bien temporairement dans votre Batch. Laspect temporaire
peut-tre utilis pour viter dans un Batch de retaper le mme chemin daccs
plusieurs fois, mais rappelez vous quune fois le Batch termin PATH retrouvera sa
valeur antrieure.

Comme vous lavez appris prcdemment, on peut ajouter facilement des donnes
une variable en utilisant la forme suivante :

PATH=%PATH%;CHEMIN_A_AJOUTER

Le point virgule nest ncessaire que pour que le DOS puisse sparer les
diffrents rpertoires contenus dans PATH. Il est superflu dans une ligne ne
dfinissant pas PATH.

Imaginons que la variable PATH contienne C:\WINDOWS;C:\WINDOWS\COMMAND

Nous souhaitons ajouter pour un programme particulier le chemin C:\mingw\bin.
En effet, ce dossier BIN contient des commandes qui doivent pouvoir tre saisies
comme des commandes DOS standard.

On inscrira donc dans Autoexec.bat :

PATH=%PATH%;C:\mingw\bin

Ce qui donnera pour le DOS au moment de lexcution dAutoexec :

PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\mingw\bin


Sous Windows NT

Rouvrez la fentre Variables denvironnement du Panneau de configuration
Systeme . Reprez dans la liste Variables denvironnement la variable PATH,
puis cliquez sur Modifier :

Formation Batch www.astase.com
Page 30/90


Ajoutez le chemin daccs dsir ; pour reprendre lexemple pris pour Windows 9x, il
vous suffit dentrer la suite des donnes existantes C:\mingw\bin :



Vrifiez bien quun point virgule prcde la chane entre, puis cliquez sur OK.
Redmarrez votre systme.


Tests et conclusion

Maintenant, imaginons que vous souhaitez lancer gcc.exe situ dans
C:\mingw\bin

Sans avoir fait cette manipulation vous auriez du entrer par exemple :

C:\mingw\bin\gcc.exe test.c o test.exe

Maintenant vous pouvez taper simplement :

gcc test.c o test.exe










Formation Batch www.astase.com
Page 31/90
4) Saut, Boucles

En principe, les lignes de commande sont traites les unes aprs 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 ou bien rpter indfiniment un
bloc de code. C'est dans ces cas-l que nous allons utiliser les commandes de
boucle.

On associe souvent une commande de saut une commande d'instruction
conditionnelle (voir chapitre suivant), ou lorsqu'un bloc de commande doit tre rpt
indfiniment. C'est sur ce cas que nous allons nous pencher pour l'instant.

Notre premire boucle

Pour faire une boucle, il nous faut deux commandes :

1) La premire est la commande Goto, (de l'anglais Go To qui signifie "aller ")
qui, accompagne du nom du Label, indique l'ordinateur, quand il doit se rendre
l'tiquette du mme nom.

2) La seconde est un "Label", c'est--dire une tiquette pose dans le programme
l'endroit ou la boucle doit recommencer.

Cest comme un tltransporteur :

Il faut un appareil de dpart (Goto) qui propulse le voyageur
vers le second point (Label), pouvant tre plac avant ou aprs lappareil
de dpart, qui reoit le voyageur.

Pour continuer avec cette analogie, si lappareil darrive est plac avant lappareil de
dpart, on obtient une boucle sans fin , cest--dire qui ne sarrte jamais. Si
lappareil darrive est plac aprs lappareil de dpart, on a ralis un saut dans
le programme, puisque si lon se replace dans le cadre dun batch les commandes
entre les deux appareils sont vites.

Par exemple :

Commande 1
Commande 2
Label BONJOUR
Commande 3
Commande 4
Commande 5
Goto BONJOUR

Les commandes 1, et 2, sont excutes une fois, alors que les autres commandes
sont excutes en boucle, puisque le programme rencontre "GOTO", va au label du
mme nom, continue, rencontre nouveau "Goto", retourne au label , etc

Formation Batch www.astase.com
Page 32/90

Un label se prsente sous la forme :

:NomDuLabel

Le nom ne doit pas dpasser 8 lettres (si le nom du label dpasse 8 lettres,
seules les 8 premires lettres seront prises en compte), et ne pas tre
compos d'espaces. La diffrence majuscule/minuscule nest pas prise en
compte pour les labels et les Goto.

Par exemple

:Debut

est un nom valide pour un label


Un "Goto" se prsente sous la forme de cette commande suivie du nom du label,
par exemple :

Goto Debut

pour aller au label "Dbut".


Allons y pour une boucle infinie !
Nous voulons afficher "Hello, World !" en boucle.

Nous crirons donc :

@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
identique

Vous obtiendrez un rsultat de ce type :

Formation Batch www.astase.com
Page 33/90

Signe que notre programme a bien boucl

Reprenons : lorsque linterprteur rencontre Goto , il analyse le nom du label qui
le suit et le cherche dans tout le batch (il peut-tre avant ou aprs linstruction
GOTO). Il sait quil doit le trouver prcd de : , indiquant quil sagit dun point
dentre potentiel du programme. Ici, il trouve le label avant le Goto : il se branche
donc dessus et reprend son excution, et retrouvant de nouveau le mme Goto, le
cycle recommenant indfiniment

Nous pouvons de la mme faon viter un bloc de code :

Commande 1
Commande 2
Goto Jmp1
Commande 3
Commande 4
Commande 5
:Jmp1
Commande 6
Commande 7

Quelles seront les commandes excutes ? Rponse : la n1, n2, n6, et n7. Les
commandes de 3 5 sont ignores. Quel est alors lintrt de cette forme : puisque
de toute faon les commandes 3, 4, et 5 ne seront pas excutes, pourquoi les
entrer dans le Batch ?
Vous verrez ultrieurement que selon quune condition soit vraie ou fausse, la ligne
Goto Jmp1 pourra tre excute ou non. Dans ce cas, lexcution des
commandes 3, 4, et 5 sera conditionnelle vous pourrez donc excuter certaines
instructions dans des cas prcis uniquement.

Dernires prcisions sur les commandes de saut :

- Deux labels ne peuvent pas porter le mme nom,
- Un goto pointant sur un label inexistant gnre une erreur lors de
lexcution.









Formation Batch www.astase.com
Page 34/90
5) Excution conditionnelle la commande "IF"

Voici une commande qui permet d'introduire des conditions dans les fichiers batch.

Si la condition formule est remplie, le reste de la ligne de commande est excute,
et le programme continue normalement, sinon le reste de la ligne n'est pas excut,
et le programme continue galement.

Attention : seule la fin de la ligne est excute, par consquent seule une unique
commande peut-tre conditionnelle, ce qui peut parfois poser des problmes. Dans
ce cas, utilisez la commande GOTO pour aller un endroit particulier si la condition
est remplie.


Syntaxe d'utilisation :

If "<condition>"=="<valeur>" <action>

Il est important de :

- Toujours encadrer la condition et la valeur tester par des guillemets,
- De veiller utiliser, lors d'un test, le double signe gal (== au lieu de =)
- Se rappeler que "<action>" reprsente une seule commande excuter.

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'excution, la valeur des variables vient remplacer leur
criture, et si une variable est nulle, MS-DOS gnre 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 "%1"=="/AIDE" ECHO Ce texte sera affiche

Ici, on va tre conduit comparer le contenu de la variable d'environnement
paramtre n1 avec le texte "/AIDE". Si ceux-ci sont identiques, un texte sera affich
l'cran.

Attention la diffrence majuscules/minuscule. Comme nous avons dit
prcdemment, MS-DOS diffrencie les contenus des variables comparer. Par
exemple, si l'utilisateur a entr "/Aide" ou "/aide" au lieu de "/AIDE", la condition ne
sera pas valide.





Formation Batch www.astase.com
Page 35/90
Dautres formes de IF sont utilisables. Par exemple :

IF NOT Condition
Vrifie si la condition est remplie. Si oui, la ligne suivante est traite, sinon, le
reste de la commande est excute.
C'est en fait "l'inverse" de la commande IF.

Exemple :

If not "%ScoreJoueur%"=="%ScoreMax%" echo Peut mieux faire !

IF EXIST Fichier
Vrifie l'existence du fichier dsign. Sil 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 paramtre reprsentant le
fichier ne peut-tre nul.

Exemple :

If exist c:\Autoexec.bat Copy autoexec.bat autoexec.old


IF ERRORLEVEL
Vrifie le numro de message d'erreur.
Des commandes MS-DOS renvoient un numro spcial au fichier batch en
cas de problme ou d'erreur, dsign par ERRORLEVEL. ERRORLEVEL vaut
toujours 0 si aucune erreur ne s'est produite. MS-DOS excute le reste de la
ligne si ERRORLEVEL est gal ou suprieur la valeur spcifie. NOTE : Le
travail avec ERRORLEVEL est approfondi ultrieurement.

ATTENTION. Si vous devez tester plusieurs valeurs de ERRORLEVEL, testez
les de la plus grande la plus petite (ex : if errorlevel 255.. if errorlevel 100
if errorlevel 50, etc) car comme dit ci-dessus, MS-DOS excute le reste de
la ligne si ERRORLEVEL est gal ou suprieur la valeur spcifie.

Il n'y a pas besoin de signe "=" entre ERRORLEVEL et le nombre
reprsentant sa valeur.

Exemple :

Format a:
If errorlevel 3 echo Vous avez annule FORMAT par Ctrl+C !





Formation Batch www.astase.com
Page 36/90
Utilisation avec la commande GOTO :

Nous avons utilis la commande IF pour introduire des questions dans les fichiers
Batch. Il serait souhaitable maintenant d'utiliser plusieurs commandes en fonction du
rsultat de la question.

Voil comment nous allons procder :

If "<1>" == "<2>" Goto Suite
Commande 1
Commande 2
:Suite
Commande 3

Ainsi, si 12, les commandes 1, 2 et 3 seront excutes, sinon, la commande 3 sera
excute et les commandes 1 et 2 vites.

@echo off
If not "%1"=="/?" Goto Suite
Echo Voici l'aide de ce programme
Echo
Goto fin
:Suite
Echo Pour commencer, pressez une touche
Pause
:Fin
REM Fin du batch

Dans le cas ci-dessus, si le paramtre envoy au batch n'est pas "/?"; les
commandes aprs "Suite" sont excutes. Sinon, le texte d'aide est affich. On a
utilis un second label FIN afin que dans le cas ou le texte daide est affich, le
programme ne soit pas ensuite excut, mais que celui-ci se termine au contraire
directement.

Un autre exemple peut tre celui dun fichier Batch copiant le fichier pass en
premier paramtre vers le fichier en second paramtre. On teste tous les cas de
figure pour que la copie se passe bien, ce qui conduit prendre des branchements
particuliers dans des situations critiques (les labels correspondant nont pas t
inclus) :

@echo off
If %1== goto PasSource
If %2== goto PasCible
If not exist %1 goto PasSource
If exist %2 del %2
Echo Copie de %1 vers %2
Xcopy %1 %2 /V /K
If not exist %2 goto ErreurCopie [etc]



Formation Batch www.astase.com
Page 37/90
Le code suivant permet de se brancher au label PasNT si le poste nest pas quip
de Windows NT :

If not %OS% = Windows_NT goto PasNT

Windows NT permet dutiliser les oprateurs suivants avec IF :

EQU - gal
NEQ - diffrent de
LSS - infrieur
LEQ - infrieur ou gal
GTR - suprieur
GEQ - suprieur ou gal

. De plus, il permet dignorer la diffrence majuscules / minuscules entre les deux
expressions comparer en utilisant le commutateur /I

Par exemple, le Batch suivant monte un disque rseau uniquement si lutilisateur est
ladministrateur :

If /I %username% EQU Administrateur net use H: \\WEB01\C$

On peut crer une pseudo boucle for sous Windows NT

if not defined i set i=0
:startfor
set /a i=i+1
REM La commande sera excute 10 fois :
echo Exemple : i vaut %i%
if %i% LSS 10 goto startfor

Avec set /a, la variable est chaque fois incrmente. Tant que celle-ci est
infrieure 10, goto startfor sera excute et la commande rpte 10 fois.

Windows NT permet aussi dutiliser le mot cl DEFINED qui teste si la variable
denvironnement transmise est dfinie.

Par exemple, le programme TPSCAN est lanc uniquement si la variable
denvironnement persistante PS2 est dfinie sur le systme :

If defined PS2 start /MAX tpscan.exe







Formation Batch www.astase.com
Page 38/90
6) Boucles avec FOR

Aprs avoir fait connaissance avec une technique de la programmation des sauts
inconditionnels (Goto), en voici une autre.

Nous allons crer un batch qui va afficher successivement les chiffres 1 4.

Ecrivez le fichier batch suivant :

@echo off
for %%A in (1 2 3 4) Do Echo C'est le nombre %%A

Ce fichier Batch contient une boucle FORDO. 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 spcifie entre les parenthses : dans notre cas, %%A
prend donc successivement les valeurs 1, 2, 3, et 4. Les valeurs constituant la liste
doivent tre spares entre elles par des espaces, des virgules, ou des points-
virgules.
Ensuite, la commande qui suit immdiatement est excute 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 excution de ECHO.
Un autre intrt de cette commande est que les lments de la liste peuvent tre des
noms de fichiers. Ainsi il est possible d'excuter 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

Vous pouvez aussi utiliser les caractres gnriques, par exemple :

FOR %%A IN (*.TXT *.BAT) DO TYPE %%A

Tous les fichiers texte et Batch s'afficheront l'cran.

Avec Windows NT, les valeurs peuvent tre extraites dun fichier, en utilisant loption
/f . Par exemple, le code suivant envoie un message avec net send en lisant les
IP des destinataires enregistres une par ligne dans le fichier dest.lst :

FOR /F %%A IN (dest.lst) DO net send %%A Attention,
redemarrage du serveur en cours...

Vous pouvez extraire des valeurs depuis un fichier texte compos de plusieurs
champs, par exemple :






Formation Batch www.astase.com
Page 39/90
;Fichier de configuration
;Compos de :
;Utilisateur / IP / Domaine / ID

Rabusier,10.173.113.2,Astase,F017C
GDM,10.173.113.3,Astase,F017D
Hmaster,10.173.113.5,Astase2,F100
Nobody,10.173.113.10,Astase2,F200

For mets pour cela votre disposition plusieurs options qui devront tre mises entre
guillemets et spares par des espaces :

- Eol=<valeur> : spcifie un caractre de fin de ligne. Seul les chanes
situes avant ce caractre seront traites. On peut utiliser cette commande
pour exclure des commentaires comme les 3 premires lignes du fichier ci-
dessus, qui commencent par ; .
- Delims=<valeur> : spcifie le dlimiteur de champ. Par dfaut ce sont
les espaces et les tabulations. Dans notre exemple, le dlimiteur de champ
est la virgule car les lignes utiles contiennent les informations spares par
des virgules.
- Tokens=<valeur> : spcifie la ou les parties spares par Delims
extraire. Par exemple, pour extraire le champ Domaine du fichier ci-
dessus, Tokens devra valoir 3 car cest le troisime champ prsent.

Pour effectuer la liste des utilisateurs (premier champ) du fichier data.dat
contenant les lignes de code ci-dessus, on tapera dans un batch :

@echo off
echo Liste des utilisateurs (dapres data.dat) :
for /f "eol=; tokens=1 delims=," %%a in (data.dat) do echo %%a

De mme, pour effectuer un ping sur toutes les IP contenues dans le mme fichier
(champ n2) :

@echo off
echo Ping en cours :
for /f "eol=; tokens=2 delims=," %%a in (data.dat) do ping %%a

Imaginons une autre structure de fichier :

La premiere ligne : un commentaire
La seconde : aussi
La troisime : galement

RootPath:C:\Program Files\Qserv\
WebPath:C:\Program Files\Qserv\www\
CGIPath:C:\Program Files\Qserv\cgi-bin\



Formation Batch www.astase.com
Page 40/90
Nous souhaitons afficher tous les dossiers dsigns dans ce fichier laide de la
commande start.
Le premier problme est que le dlimiteur est le caractre : et que la chane sa
droite peut aussi en contenir nen tant pas, comme cest le cas avec les chemins
entrs. Il faut donc rcuprer les lignes partir second champ.
Aussi vous pouvez utiliser la syntaxe tokens=x,y,z.. qui dsigne LES lments
slectionner. Nous pourrions choisir dcrire tokens=2,3 pour slectionner le
second et le troisime champ, mais il est plus lgant dutiliser le caractre * qui
demande extraire tout le reste de la ligne partir du champ prcdent ; la
commande devient donc : tokens=2,*
Le second problme est que les 3 premires lignes, bien que contenant des : ,
sont des commentaires quil faut exclure. Vous pourrez utiliser lattribut skip=n qui
exclut les n premires lignes du fichier. Ainsi, vous entrerez pour ignorer les
commentaires de ce fichier : skip=3

Le batch exploitant ce fichier pourra donc scrire :

@echo off
echo Voila les chemins du fichier :
for /f "skip=4 tokens=2,* delims=:" %%a in (data.dat) do start
%%a:%%b

Vous remarquerez la syntaxe un peu obscure de la commande echo %%a:%%b. For
place chaque chane extraite correspondant un token dans une variable
diffrente : il en faut donc ici 2, une qui contiendra le second champ (a) et une le
reste (b). Enfin, le dlimiteur nest jamais pris dans les chanes, il faut donc le
rajouter en linsrant entre les deux variables.

For peut tre utilis pour analyser non plus un fichier, mais le rsultat dune
commande. Celle-ci doit tre encadre de guillemets inverse (`commande`) et
insre la place du fichier trait.
Utilisez alors systmatiquement lattribut usebackq pour confirmer lutilisation des
guillemets inverss et permettre linsertion de guillemets normaux dans la ligne de
commande excute.

Par exemple, le batch suivant affiche toutes les variables denvironnement dfinies
sur votre systme :

@echo off
echo Variables definies :
FOR /F "usebackq delims==" %%i IN (`set`) DO echo %%i

La commande excuter a t place entre guillemets inverss, cest set, elle
affiche toutes les variables dfinies et leurs valeurs. Il a fallu extraire uniquement les
noms des variables : cela a t ralis en spcifiant que le dlimiteur tait le signe
gal (en effet la syntaxe daffichage est toujours Nom=Valeur), do lexpression un
peu curieuse delim==
Nous navons pas spcifi avec token que nous souhaitions le premier champ car
par dfaut cest toujours celui-ci qui est pris si rien nest prcis.
Formation Batch www.astase.com
Page 41/90
Un autre exemple qui part de la question : comment afficher uniquement le nom des
dossiers dun rpertoire ?
Avant dcrire la commande, on cherche une stratgie qui pourrait tre semblable
celle-ci :

- Excuter la commande dir *. qui naffiche que les rpertoires et
transmettre son rsultat FOR,
- Ignorer les 5 premires lignes qui contiennent des commentaires apports
par MS-DOS sur la structure de fichiers du disque,
- Le nom des rpertoires tant prcd de <REP>, on extrait donc les
rpertoires en utilisant > (dernier caractre avant le nom) et en prenant
uniquement la seconde partie de la ligne.

Cela peut se traduire ainsi :

@echo off
echo Repertoires du dossier courant :
FOR /F "skip=5 usebackq delims=> tokens=2" %%i IN (`dir "*."`)
DO echo %%i

For peut tre galement utilis pour analyser une chane. La chane doit simplement
tre spcifie entre guillemets, par exemple :

@echo off
echo Ecriture du nom du PC dans C:\nompc.txt
for /f "delims==" %%a in ("%computername%") do echo
%%a>>c:\nompc.txt

Un autre exemple, ce batch renomme le fichier pass en paramtre en lui incluant la
date du jour. Le premier paramtre doit tre le nom du fichier et le second son
extension. Les / de la variable date sont transforms en _ avec for pour ne
pas tre pris pour des sparateurs de dossiers par Windows :

@echo off
if "%1"=="" goto PasSource
if not defined date goto PasDate
REM - La date stocke dans %date% contient le signe "/"
REM qu'on ne peut utiliser pour renommer les fichiers car
REM c'est un caractre spcial de Windows. On le remplace donc
par "_"
for /f "tokens=1-3 delims=/" %%a in ("%date%") do set
newdate=%%a_%%b_%%c
REM - On renomme le fichier
ren "%1" "%1_%newdate%.%2"


Avec le commutateur /L, For peut tre utilis pour gnrer une suite de nombres
comme son homologue implment dans les langages de haut niveau :

FOR /L %%variable IN (dbut,pas,fin) DO commandes
Formation Batch www.astase.com
Page 42/90
%variable prends successivement les valeurs numriques allant de dbut fin
par pas de pas. Par exemple, le triplet (1,1,10) excute dix fois la commande, la
variable prenant les valeurs 1,2,3,410. Le triplet (-5,1,15) gnre des valeurs
croissantes de -5 15. Le triplet (0,10,200) excute vingt fois la commande ( cause
du pas de 10 et de la limite fixe 200), la variable prenant les valeurs
0,10,20,200. Enfin, le triplet (15,-1,0) gnre quand lui une suite dcroissante de
15 0.

Pour rpter dix fois une commande, vous pourrez ainsi entrer :

for /l %%a in (1,1,10) do [commande]

Pour supprimer les 100 fichiers texte portant des numros pairs (0.txt, 2.txt, 4.txt)
dans un rpertoire, vous pourrez utiliser :

for /l %%a in (0,2,100) do del %%a.txt

Enfin, Avec le commutateur /R, For peut tre utilis pour explorer des rpertoires et
excuter des actions rptitives sur les fichiers qui le concernent. La syntaxe de
cette forme est :

FOR /R chemin %%variable IN (critre) DO commandes

Si chemin est diffrent de . , tous les fichiers du rpertoire spcifi et de ses sous
rpertoires compatibles avec le critre entr sont successivement mis dans variable.
Sinon, seul les dossiers sont pris en compte. Par exemple, pour afficher tous les
batchs du rpertoire Windows, vous pourriez crer un fichier contenant :

@echo off
echo Liste des fichiers batch :
for /R %windir% %%f in (*.bat) do echo %%f
pause>nul
cls

De mme pour supprimer tous les fichiers TMP :

@echo off
echo Liste des fichiers batch :
for /R %windir% %%f in (*.tmp) do del %%f
pause>nul
cls

Enfin, pour faire une sauvegarde de tous les fichiers .h dun rpertoire pass en
paramtre vers H:\SVG :

@echo off
if %1== goto PasSource
echo Copie en cours...
for /R %1 %%f in (*.h) xcopy %%f H:\SVG\*.*
Formation Batch www.astase.com
Page 43/90
7) Redirections de sorties
et criture dans les fichiers

Vous pouvez lire et crire dans des fichiers, l'aide de commandes Batch.
Nous avons dit dans le chapitre 1 que la commande ECHO servait en fait "crire"
quelque chose quelque part. Pour l'instant, nous nous sommes content d'"crire"
sur l'cran, mais dans ce chapitre on va voir comment le faire sur le disque.

Nous allons utiliser les chevrons (">" ou "<") comme caractres de redirection. Ceux-
ci transmettent, selon leur sens, le rsultat de la commande excute gauche vers
llment leur droite. Si llment droite dsigne un nom de fichier valide, le flux
de donnes sera crit ou lu dans ou depuis le ce fichier. Vous devez veiller au
nombre de chevrons, et leur sens, en effet, la sortie sur le fichier en dpendra.

crire dans des fichiers

On utilise ici le chevron orient vers la droite (>).

criture en mode "ajout" (Append)

Ce mode permet d'ajouter des donnes sans craser celles qui taient inscrites
prcdemment dans le fichier.

Nous allons utiliser 2 chevrons, orients vers la droite, qui pointent vers le nom de
fichier utiliser :

Echo Texte crire>>c:\texte.txt

Ainsi, 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 donnes y seront inscrites sans gnrer
d'interruptions ou d'erreurs, sauf si le ou les rpertoires le contenant n'existent pas
eux-mmes,
Le texte inscrire sera ajout la fin du fichier,
Une nouvelle ligne sera cre dans le fichier chaque fois que vous appellerez la
commande.

Exemple pratique : vous souhaitez excuter le programme StartServer.exe situ
dans C:\www, au dmarrage de votre ordinateur. Il vous suffira d'crire :

Echo C:\www\StartServer.exe>>C:\Autoexec.bat

La commande DOS c:\www\StartServer.exe sera inscrite dans Autoexec.bat et
le programme lanc chaque dmarrage.

criture en mode "Ecrasement" (Output)

Contrairement au mode d'ajout, le mode d'crasement efface toutes les donnes
inscrites prcdemment dans le fichier, puis inscrit la ligne transmise.
Formation Batch www.astase.com
Page 44/90
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 prcdemment, tout le texte compris entre "Echo" et le ">" sera crit dans
"c:\texte.txt".

Si le fichier n'existe pas, il sera cr et les donnes y seront inscrites sans gnrer
d'interruptions ou d'erreurs sauf si le ou les rpertoires le contenant n'existent eux-
mmes pas
Le contenu du fichier sera automatiquement effac. Toutes les donnes seront
perdues et remplaces par le texte entre "echo" et ">"

Par exemple, vous souhaitez sauvegarder le nom dutilisateur courant contenu dans
%USERNAME% dans un fichier :

Echo %USERNAME%>%WINDIR%\CurrentUser.lst

Comme nous l'avons dit plus haut, si le fichier n'existe pas, il sera cr et les
donnes y seront inscrites sans gnrer d'interruptions ou d'erreurs sauf si le ou les
rpertoires le contenant n'existent eux-mmes pas. Ici, le rpertoire de destination
est celui de Windows, il y a donc peu de chance pour que nous soyons dans ce cas
de figure.

Ecrire le rsultat d'une commande dans des fichiers

Vous pouvez inscrire le rsultat d'une commande DOS dans un fichier, avec les deux
modes dcrits 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


La redirection vers "nul"

"Nul" reprsente un priphrique virtuel inexistant. Utilis avec ">" et ">>", il permet
d'"crire" le rsultat de commande vers rien du tout, cest--dire, en clair, de les
masquer.
La commande gauche de >nul est excute correctement, mais son
rsultat nest pas affich.


Formation Batch www.astase.com
Page 45/90

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 droulement du programme continue).

Note : NUL peut tre aussi utilis pour tester si un lecteur existe, avec une
commande de la forme if exist g:\NUL faitquelquechose , "if" testant si un
fichier virtuel pouvant reprsenter n'importe quel lment en ralit sur le disque
existe.

La redirection vers "prn" et les autres ports

voquons brivement la redirection vers Prn : elle permet denvoyer du texte
limprimante :

Echo test>prn

De la mme faon, vous pouvez utiliser la place de prn tout autre symbole
dsignant un port : lpt1, lpt2, com1, com2 mais cela dpasse le cadre du tutoriel.

Le symbole de redirection |
Ce caractre de redirection, appel Pipe (canal, tuyau) en anglais permet de
rediriger la sortie dune commande vers lentre dune autre. Ce caractre sobtient
en maintenant la touche ALT enfonc en tapant 124 au clavier (ou AltGr + 6).

Prenons un exemple bien connu : en tapant DEL *.* afin deffacer le contenu dun
rpertoire, un message de confirmation apparat, demandant lappui sur la touche
o (pour OUI) pour continuer. Il serait intressant de supprimer ce message de
confirmation qui interrompt le droulement dun batch afin que la commande
sexcute toute seule sans besoin dune validation quelconque de lutilisateur. La
commande suivante permet de rsoudre ce problme :

Echo o|del*.*
La sortie de la commande echo (le caractre o ) est envoye vers lentre
de la commande DEL. Lorsque le message sera affich, MS-DOS considrera le
caractre reu comme une rponse au message et continuera lexcution du batch.
Dans notre cas, ce sera comme une validation la question Pressez o pour
continuer, n pour annuler .

Second exemple : A votre avis que fait la commande suivante ?

ECHO.|DATE >> sauv.lst
Formation Batch www.astase.com
Page 46/90
Rponse : La date est sauvegarde dans le fichier SAUV.LST Mais le message
Entrez une nouvelle date (jj.mm.aa) : est valid par un retour chariot echo . :
la sauvegarde se fait sans besoin dintervention humaine (pas besoin de valider
lorsque le message demandant dentrer une nouvelle date apparat).

Ce symbole facilite grandement le vie du programmeur Batch, qui peut ainsi imposer
davance la rponse des messages DOS qui pourraient entraver lexcution de
ses batchs.

Note : On retrouve aussi ce caractre dans lutilisation quotidienne du DOS : le fait
daccoler |more une commande standard permet que son rsultat, sil prend
plusieurs crans, ne soit pas affich dun coup mais en autant de fois quil le faut
pour faciliter la lecture. Ainsi, testez sous DOS :

CD %WINDIR%
DIR *.*|MORE

La liste sera affiche en plusieurs fois : chaque cran, le DOS vous demande de
presser une touche pour continuer le dfilement.


Rediriger une entre vers une commande : le caractre <

Beaucoup de commandes ncessitent lenvoi de caractre pour valider des
messages ou rpondre des questions. MS-DOS vous permet de rpondre ces
questions en lisant le texte envoyer dans des fichiers.

Par exemple : crez avec EDIT ou NOTEPAD un fichier la racine de C:\ nomm
test.txt. Inscrivez 6/12/02 , puis sauvez votre fichier.
Ouvrez ensuite une console DOS, placez vous la racine de C:\ si ce nest pas dj
le cas, puis entrez :

DATE<TEST.TXT

Quelques secondes plus tard, la date actuelle aura t change en 6/12/02.

Que sest-il pass ? Le caractre < (chevron orient dans le sens INVERSE que
pour lcriture) redirig le contenu du fichier TEST.TXT dans DATE . Ainsi,
lorsque DATE a demand une nouvelle date, cest le contenu du fichier qui a
valid la commande. L aussi, vous avez russi supprimer toute intervention
humaine pour entrer et valider une nouvelle date.

Aurait-on pu imposer une rponse sans lire dans un fichier avec laide dune autre
commande ?
Oui, en utilisant le Pipe | de la faon suivante :
ECHO 6/12/02|DATE
Formation Batch www.astase.com
Page 47/90
Mais lutilisation du chevron de lecture < permet de dfinir une date suivant le
contenu du fichier : celle-ci nest pas fixe une fois pour toute dans le batch comme
avec la commande de Pipe, mais peut varier selon le contenu du fichier texte.

Un autre exemple :

Pris au hasard dans un titre de la presse informatique (attention : ce nest quun
extrait, cet exemple nest pas complet):

echo E 01D0 03 50 A4 92 F2 BF 4C 25 3E 67 86>>scr2bin
echo RCX>>scr2bin
echo 1db>>scr2bin
echo W 0>>scr2bin
debug < scr2bin > nul

Les quatre premires lignes crivent des donnes dans un fichier scr2bin . Celui-
ci est crit en mode Ajout en utilisant les doubles chevrons chaque ligne tant
inscrite les unes aprs les autres.
La cinquime ligne est plus complexe : on peut dabord voir que le rsultat de cette
ligne ne sera pas affich : on utilise la redirection vers nul via > nul , et que la
commande debug est utilise. Au milieu, il reste < scr2bin : on comprend
donc que le fichier scr2bin est envoy au programme debug afin dtre
interprt. Le fichier est donc cre par le batch, puis envoy debug, en masquant
les commentaires/erreurs pouvant tre affiches par le programme.





















Formation Batch www.astase.com
Page 48/90
8) Appel d'autres fichiers Batch

La commande CALL permet d'appeler un fichier Batch partir d'un autre fichier
batch. Aprs avoir trait le fichier batch appel, le programme revient au premier
fichier batch et l'endroit prcis o le fichier batch a t appel.

Vous pouvez galement appeler un fichier batch partir d'un autre sans pour autant
revenir au fichier batch de dpart. Il suffit tout simplement d'appeler le fichier batch
par son nom (ou son adresse) cest--dire sans CALL.

Appel sans CALL

Vous pouvez appeler un fichier batch partir d'un autre en utilisant son nom. Le
rsultat est que le batch appel est trait, mais il est impossible de revenir au batch
de sortie prcdemment trait. On peut en quelque sorte parler de "liaison
unilatrale".

Exemple :

C:\MesBatch\fichier.bat

Appel avec CALL

Un batch X appelle un batch A un endroit prcis. CALL a pour rle de contrler que
MS-DOS remarque bien le "point de saut" et revienne dans le batch appelant aprs
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 lon
peut ensuite les appeler le nombre de fois que l'on veut partir de n'importe fichier
Batch.

Exemple :

CALL c:\MesBatch\Routine1.bat

Appel dexcutables Windows

La commande START permet de lancer des applications Windows depuis vos
Batchs. Sous NT, vous pouvez mme dfinir la priorit du processus cr. Voil
quelques lignes de commande qui pourront vous tre utiles :

Start /w bugfix.exe : Lance bugfix.exe ; en attendant que son excution soit
termine pour continuer,

Start /MAX bugfix.exe : Lance bugfix.exe en plein cran.



Formation Batch www.astase.com
Page 49/90
9) Travail avec ERRORLEVEL

De nombreuses commandes MS-DOS revoient une valeur de retour diffrente de 0
quand une erreur se produit. Dans le fichier Batch, elle peut-tre consulte 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. Si vous programmez avec Delphi vous
pourrez utiliser Halt(x), o x dsigne la valeur de retour renvoyer au DOS.

Cette valeur peut-tre teste avec IF, mais attention, il y a un lger point surveiller :
si la valeur de retour est SUPERIEURE OU EGALE au numro indiqu la
commande est excute. Par consquent, si vous avez plusieurs ERRORLEVEL
tester, commencez toujours par la plus grande, puis procdez par ordre
dcroissant.
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 contrlons toujours la valeur la plus leve :

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



Formation Batch www.astase.com
Page 50/90

Un autre exemple : supposons un programme bcc32.exe qui renvoie 0 quand tout
sest bien pass, 1 si le fichier dentre nexiste pas, 2 si le contenu du fichier
comporte une syntaxe errone et 3 si une autre erreur sest produite.

Pour grer les erreurs on pourra crire :

REM Appel du programme :
Bcc32.exe %1 %2 %3 %4 %5
REM Gestion des erreurs :
Goto gest%errorlevel%
:gest0
echo Aucune erreur
goto fin
:gest1
echo Le fichier dentree nexiste pas !
goto fin
:gest2
echo Erreur dans le fichier dentree
goto fin
:gest3
echo Erreur inconnue.
:fin
pause>nul

La ligne Goto gest%errorlevel% prendra lexcution la valeur gest0, gest1,
gest2, ou gest3 et commandera le branchement adquat.

Nous avons dit que le if de Windows NT acceptait les oprateurs plus petit, plus
grand, plus grand ou gal, etc. Vous pouvez ainsi tester rapidement si une erreur
sest produite ou pas avec :

REM Appel du programme :
Bcc32.exe %1 %2 %3 %4 %5
REM Gestion des erreurs :
IF not %ERRORLEVEL% LES 1 goto erreur
echo Aucune erreur
goto fin
:erreur
echo Erreur inconnue.
:fin

Ainsi, si %ERRORLEVEL% est infrieur 1 (donc est gal zro) on ira erreur.

Toutes les commandes DOS ne renvoient pas des valeurs d'erreur. Les commandes
concernes n'utilisent que certaines valeurs.



Formation Batch www.astase.com
Page 51/90
10) Tches dadministration courantes

Ce chapitre vous prsente les tches dadministration courantes que vous serez
peut-tre amener raliser via MS-DOS.

Envoi de messages

Il peut tre parfois utile denvoyer un message sur certains PC de votre rseau pour
signaler des informations importantes, comme par exemple limminence dune panne
rseau ou dune opration de maintenance.

Ces messages sont de simples botes de dialogues, comme celle-ci :



Les receveurs potentiels doivent :
- Avoir activ Windows Messenger sils sont sous Windows NT,
- Lancer en arrire plan le programme WINPOPUP.EXE sous Windows 9x.

Activation de Windows Messenger

Dmarrez litem Outils dadministration du Panneau de Configuration, puis ouvrez
Services . Si le service Affichage de messages nest pas dmarr, faites un
clic droit dessus puis cliquez sur Dmarrer :



Le receveur est prt afficher les messages quil reoit.

Envoi de messages

Lenvoi de message se fait avec la commande net et le paramtre send . La
syntaxe dutilisation est la suivante :

Net send Utilisateur Texte




Formation Batch www.astase.com
Page 52/90
Utilisateur reprsente soit lIP du poste destinataire, soit le nom de lutilisateur
destinataire, soit son nom de poste rseau Microsoft,

Texte reprsente le message dlivrer.

Par exemple, le batch suivant prvient lutilisateur du poste 192.168.113.2 que son
PC va bientt tre redmarr :

@echo off
echo Ce batch previent le redemarrage du poste SMB.
echo Continuer ?
pause>nul
net send "192.168.113.2" "Attention, le redemarrage du poste
est imminent. Sauvegardez immediatement votre travail.">nul
echo Termine.
pause>nul

Ce Batch peut tre excut par un autre programme pour prvenir lutilisateur ayant
envoy un document imprimer que celui-ci est termin :

@echo off
cls
if "%1"=="" goto SynError
REM - Envoyer le message
net send "%1" "Votre document est imprime."
goto fin
:SynError
echo Cette application le nom de l'utilisateur ayant lance le
travail
echo d'impression passe en parametre !
:fin
cls
echo on

Lexemple suivant utilise une boucle FOR pour dlivrer un message un ensemble
de postes :

@echo off
echo Pressez un touche pour diffuser les infos de maintenance
pause>nul
for %%A in (WEBLAF01 S108M S110M S112M S114M) Do net send
%%A Maintenance du groupe ELECTRONIQUE en cours, merci de
ne pas vous connecter au reseau pendant quelques
minutes...>nul
cls






Formation Batch www.astase.com
Page 53/90
Le dernier exemple illustre le cas ou ladministrateur systme doit informer tout le
rseau dune panne systme sur un des serveurs de lentreprise :

@echo off
echo Pressez un touche pour lancer le batch de broadcast
critique
pause>nul
net send * Probleme sur INTERSHR01, merci de ne plus
utiliser de ressources sur ce serveur pendant cette heure
cls


Mappage de lecteurs rseaux

Il est possible de monter des ressources rseau distantes (issues de serveurs
Microsoft) comme disques locaux grce la commande NET USE. Ainsi, par
exemple, le dossier partag \\BACKUPSRV\BACKUP\JUIN pourra tre associ au
lecteur G:\. Celui-ci apparatra comme un priphrique de stockage classique.

La syntaxe globale de la commande est la suivante :

Net use disque ressource_rseau autres_parametres

Utilisez net use / ? pour afficher la liste des options complte de cette
commande.

Exemple : le serveur INTERSHR contient un dossier partag LIB quon souhaite
monter chaque dmarrage comme disque H. On pourra crire un batch dans ce
style lanc chaque dmarrage :

@echo off
cls
echo Montage des volumes reseau...
net use H: \\INTERSHR\LIB
cls

De la mme manire, on pourra forcer (avec /yes) le montage du volume cach
PROFS en tant que G :

@echo off
cls
echo Montage des volumes reseau priv...
net use G: \\S208M\PROF$ /yes>nul
cls





Formation Batch www.astase.com
Page 54/90
On peut utiliser le batch suivant pour monter des ressource sur la premire unit
logique disponible (*). La lettre sera donc attribue par Windows en fonction de la
configuration locale au moment de lappel de la commande :

@echo off
cls
echo Montage des volumes en cours
net use * \\SYSSRV01\SHARED$ >nul
net use * \\SYSSRV02\C$ >nul
net use * \\SYSHPTUX\PUBLIC >nul
cls

Pour supprimer explicitement un lien tabli, utilisez le commutateur DELETE :

echo Extinction de lordinateur
REM Deconnexion...
Net use * /DELETE /YES
REM On se deconnecte de toutes les ressources reseau
Shutdown t 00 f s
REM Extinction immediate du PC


Synchronisation de lheure

Dans un parc de plusieurs machines, il peut tre intressant de pouvoir mettre
automatiquement les clients lheure du serveur pour de multiples raisons.

La commande NET TIME permet dafficher ou de synchroniser lheure par rapport
un autre poste. Par exemple le Batch suivant, excut chaque dmarrage, permet
de rgler lheure locale sur le poste XVHINA :

echo Rglage de lheure en cours
Net time \\XVHINA /SET /YES >nul
Echo Termine.
Cls

/SET force la synchronisation, et /YES valide toute confirmation ventuellement
requise.


Sauvegarde & Dploiement

Avec XCopy, utilitaire de copie intgr MS-DOS, vous pouvez copier dossiers et
fichiers dans un batch en une seule ligne de code.

Le Batch suivant est un exemple qui sauvegarde C:\Travail dans
\\SRVBACKUP\<nom dutilisateur>. Il cre un fichier log contenant la liste
des messages affichs par Xcopy et le place ensuite sur le serveur.

Formation Batch www.astase.com
Page 55/90

@echo off
if "%username%"=="" goto fin
echo Sauvegarde de vos fichiers...
Xcopy "C:\Travail" "\\SRVBACKUP\%username%\" /D /S /C /L>> "\\
SRVBACKUP\Log\%username%.log"
echo Termine !
:fin

XCopy est extrmement riche en options de copie. Tapez XCopy / ? pour un
descriptif de tous les paramtres quil accepte. Dans notre cas, nous utilisons /D
pour copier uniquement les fichiers modifis, /S pour copier rpertoires et sous
rpertoires, /L pour afficher la liste des fichiers copis et les enregistrer ainsi
dans le fichier LOG, et /C pour forcer la copie mme en cas derreur.

Ce batch peut tre ensuite lanc :
- Soit lextinction ou au dmarrage de lordinateur,
- Soit par lutilisateur lui-mme,
- Soit par le systme, via la cration dune tche planifie avec Windows ou
avec MS-DOS (at).

Une autre utilisation peut tre la restauration de documents depuis le serveur. Par
exemple, le Batch suivant restaure le dossier C:\DATA partir du serveur. Lanc
chaque dmarrage, il assure que cest bien la version de ladministrateur qui est
prsente sur les postes clients :

@echo off
echo Les fichiers sont actuellement restaurs
xcopy \\SV32\logon\winfiles c:\data /E /C > nul
echo Termine.
cls

Enfin, vous aurez peut-tre parfois besoin de dployer des applications, c'est--
dire de raliser des installateurs rudimentaires pour des programmes. Dans ce cas,
voil quelques outils pour raliser vos installations en batch :

- Utilisez Xcopy pour copier fichiers et dossiers. Nhsitez pas utiliser le
commutateur /V pour vrifier que les fichiers ont bien t copis,
- Vous pouvez importer des fichiers REG contenant des valeurs de cls
ajouter la base de registre Windows via en utilisant la commande
regedit /s fichier.reg . Le commutateur /s assure que
limportation se fera silencieusement, sans aucun message ou confirmation
demander lutilisateur,
- Vous pouvez enregistrer des DLL ActiveX dans la base de registre avec
regsrv32.exe /s fichier.dll ,
- Vous pouvez redmarrer lordinateur facilement une fois les copies
effectues avec le programme shutdown sous Windows NT.



Formation Batch www.astase.com
Page 56/90
Exemple :

@echo off
echo Deploiement de IRVIEW en cours...
echo.
echo Copie des fichiers
REM - Copie des fichiers vers %windir%
xcopy irviewCore.dll "%windir%" /V /Y /H
xcopy irview.exe "%windir%" /V /Y /H
xcopy irviewLib.dll "%windir%" /V /Y /H
REM - Copie des dossiers vers %windir%
xcopy "irdat16" "%WINDIR%" /V /Y /C /S
xcopy "irdat32" "%WINDIR%" /V /Y /C /S
REM - Enregistrement du serveur ActiveX
regsvr32 /s "%WINDIR%\irviewLib.dll"
REM - Mise jour de la BDR
regedit /s "ir_s1.reg"
regedit /s "ir_s2.reg"
regedit /s "irv_svc.reg"
REM - Redmarrage
shutdown -r -t 00 f

Dploiement automatique depuis un serveur : il peut tre facile galement de lancer
des excutables situs depuis un poste distant :

@echo off
net use J: \\WLSRV\Autorun\%username% /y >nul
cd J:
for %%A in (*.exe) do start %%A
net use J: /DELETE /y >nul
cls

Lexemple ci-dessus monte comme disque J : la ressource rseau situe sur
\\WLSRV\Autorun\<nom dutilisateur>, excute tous les fichiers EXE quil
contient, puis se dconnecte. On a ainsi, si le batch est excut chaque
dmarrage, programme une sorte dautoexec rseau .


Lancement planifi de batchs

Vous pouvez planifier sous Windows NT le lancement de Batchs grce la
commande intgre at.
Tapez at / ? en ligne de commande pour avoir la liste des options de la
commande.

Imaginons un batch contrlant les quotas de certains dossiers devant tre excut
pendant la pause des employs, midi. Son lancement peut tre planifi ainsi :

At 12:00 /INTERACTIVE /EVERY:l,ma,me,j,v P:\ad\checkquotas.bat

Formation Batch www.astase.com
Page 57/90
Tous les jours ouvrables de la semaine le batch sera ainsi lanc. Pour supprimer
toutes les tches prcdemment planifies, entrez at /DELETE.

Un autre exemple : vous vous occupez dun parc informatique dont les PC tournent
sans interruption. Vous souhaitez les rebooter automatiquement les lundis 5 heure
du matin

Cration du fichier restart.bat destin redmarrer le PC, plac dans le
dossier c:\util :

@echo off
Net use Z: \\MASTER\LOG\REBOOT$ /y >nul
REM Monte la ressource Z
Shutdown t 00 r l f >> Z:\%username%_reboot.log
REM Redmarre le PC en fermant la session,
REM Stocke le rsultat dans <nom dutil.>_reboot.log
Net use Z: /y /DELETE
REM Ferme lacces...
Cls
REM FIN

Planification automatique via AT :

At 5:00 /EVERY:l c:\util\restart.bat

Batchs douverture de session

Grce au mcanisme netlogon de Windows NT, vous pouvez excuter un Batch
douverture de session sur le client. Celui-ci peut inclure toutes les commandes
dadministration que nous venons de dtailler. Par exemple :

@echo off
echo Ouverture de session...
REM Reglage de lheure
Net time \\UXSERV\ /set /yes > nul
Net use G: \\UXSERV\DATA$ /yes > nul
Call \\MAINBB\NETLOGON\Commun.bat
REM Monte les volumes rseau
If not %username% == xcopy
\\UXSERV\logon\Default\%username% c:\Home /E /C
REM Copie les fichiers
set path=%path%;C:\MinGW\bin;%windir%\hina\bin
REM Modifie le PATH


Kit de ressource Microsoft

Microsoft propose un kit dadministration comprenant des programmes utilisables
dans vos batch pour vous aider dans la gestion dun parc de machines. Voir
microsoft.com pour plus de dtails.
Formation Batch www.astase.com
Page 58/90
Dtails sur certaines fonctionnalits de PowerBatch

Les trois prochains chapitres dtaillent lutilisation de certaines fonctions de
PowerBatch, lditeur de Batch que nous distribuons. Si vous ne le possdez pas
vous pouvez les sauter directement.

11) La compilation

PowerBatch vous permet de compiler un fichier Batch, cest--dire de le transformer
en un excutable binaire Windows (.exe ou .com) grce Bat2Exec. Un excutable
prsente en effet plus d'avantages qu'un fichier Batch : vitesse d'excution plus
leve, code source "protg", format binaire inaltrable, etc

Bat2Exec n'est pas compatible avec toutes les commandes DOS et Batch, par
consquent, testez bien le fichier compil avant de le distribuer pour viter toute
mauvaise surprise. Par exemple, la commande "CHOICE", n'est pas supporte par le
compilateur.

Compiler un fichier

1) Crez 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 cre.

La fentre suivante apparat :


Formation Batch www.astase.com
Page 59/90

Cliquez sur "Compiler" pour compiler le fichier Batch.

Un fichier ".com" sera cr, rsultat du code compil par Bat2exec.


Compilation sans erreur

Si toutes les commandes ont t supportes, et que Bat2Exec n'a rencontr aucune
erreur, PowerBatch affiche une boite de dialogue confirmant le succs de la
compilation.

Compilation avec erreur

Si Bat2exec rencontre des erreurs lors de la compilation, il lui sera impossible de
crer le fichier ".com".

Si par exemple, nous introduisons une erreur dans notre code

@echo off
echo Bonjour, pressez une touche
Goto Bonjour

(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 :



Bat2exec va vous montrer l'erreur qu'il a rencontre, dans notre cas, on a :


Il ne vous reste plus qu' reprendre votre code pour le corriger.
Utilisez la barre d'tat situ sous la zone de texte de PowerBatch qui affiche la ligne
en cours pour dtecter do vient l'erreur d'aprs le n de ligne transmis par
Bat2exec.
Formation Batch www.astase.com
Page 60/90


12) Les bordures

L'art de "faire" les bordures dans un fichier Batch est trs apprci des connaisseurs
et des novices : quoi de plus esthtique d'encadrer un texte de cette faon :


Pour cela, MS-DOS utilise tous les caractres "spciaux", c'est pour cela que dans le
chapitre 1 nous vous avons conseill d'viter d'utiliser les caractres accentus tels
que ",," etc

En ralit, voil ce qu'il faut entrer dans un Batch pour faire cette bordure :

Au lieu d'entrer ces caractres la main, utilisez l'assistant crateur de bordures de
PowerBatch (Dans le menu "Outil").

Voici comment se prsente l'assistant son lancement :



Formation Batch www.astase.com
Page 61/90




Comme vous le voyez, cet assistant comporte une sorte d'"encadrement" constitu
de plusieurs images reprsentant un cadre fictif.

Il vous faudra en fait cliquer sur la case reprsentant la bordure voulue pour qu'elle
apparaisse dans la zone de texte de la fentre.

Pour crer la bordure haute (1 coin haut/gauche, 8 traits horizontaux, et 1 coin
haut/doit), correspondant la ligne :



vous cliquerez 1 fois sur la case :


8 fois sur la case :


et 1 fois sur la case :


Ensuite, il vous faut aller la ligne.
Cliquez sur "Retour chariot" pour crer une nouvelle ligne.
Nous devons donc entrer la seconde ligne pour crer une bordure ressemblant :


Cette bordure est constitue de : 1 ligne verticale, vous cliquerez donc 1 fois sur la
case reprsentant 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 reprsentant un
trait vertical.
Ensuite, allez la ligne pour crer la dernire ligne de la bordure :


Formation Batch www.astase.com
Page 62/90
Cette bordure est constitue de : 1 coin bas/gauche, 8 traits horizontaux, un coin
bas/droit : vous utiliserez donc les cases de l'assistant appropries.

La zone de texte de l'assistant contient maintenant :

Ne nous proccupons pas pour l'instant du texte "Bonjour" intercaler dans la
bordure.
Notre bordure proprement parler est maintenant cre. Pour l'insrer dans le fichier
Batch, cliquez sur :


La fentre de l'assistant se ferme, et le code est maintenant copi dans le presse-
papier.

Collez ce code l'endroit voulu dans le batch l'aide de la commande "Coller" du
menu "Edition".

Dans votre Batch, vous avez maintenant :


Pour afficher le fameux "Bonjour", il ne vous reste plus qu' l'intercaler dans la
seconde ligne, en veillant ce que les bordures verticales (reprsentes ici par des
"") restent alignes avec les coins (ici , >>, ,et 1/4)

On a donc maintenant notre bordure :


Testez le fichier Et le rsultat est bien celui attendu !

Par consquent, utilisez l'assistant crateur de bordures pour encadrer des textes
automatiquement, si vous ne souhaitez pas entrer manuellement les caractres
spciaux affichant les bordures.

Note : Il existe d'autres styles de bordures non supportes par l'assistant de
PowerBatch. Dans ce cas vous devrez les rentrer manuellement.
Formation Batch www.astase.com
Page 63/90
13) 5 autres fonctions de PowerBatch

1) Le test ligne, le test de bloc, le test pas pas,

PowerBatch prsente diverses possibilits de test de vos fichiers batch :

Le test ligne/bloc est obtenu en pressant la touche F8 (ou avec le menu
Programme>Deboggage) :



Cette fonction vous permet de tester une seule ligne de votre fichier ou un bloc de
commandes, de la ligne X la ligne Y.

Vous pouvez passer des paramtres au batch ou dsactiver lcho local (echo off)
pour vos commandes.


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
dclenchera les erreurs, quelle valeur prendra les variables, etc

Vous devrez presser la touche "O" ou "N" chaque ligne, la touche O dexcuter
la ligne, N de la passer sans lexcuter.
Formation Batch www.astase.com
Page 64/90
Pour commencer un test pas pas vous devez obligatoirement presser la touche "O"
de votre clavier dans la fentre DOS qui s'affichera.

2) Les modles Batch



PowerBatch prsente plusieurs modles complets de Batch, disponibles dans le
menu Fichier > Nouveau > Autres
Utilisez par exemple le modle "Environnement tendu" pour parer aux classiques
erreurs dues un espace d'environnement insuffisant.

3) L'assistant XCOPY

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
paramtres et des options valides.

Vous pouvez lancer cet assistant l'aide du menu "Outils".










Formation Batch www.astase.com
Page 65/90
4) La commande CHOICE

La commande CHOICE permet d'introduire des entres clavier dans un batch.
Attention, il n'est pas question d'entrer du texte, mais juste d'appuyer sur une touche
et d'agir en fonction de la touche presse, pour faire des messages du style : Pour
continuer, pressez C, pour quitter, pressez Q

Cet assistant vous permet d'utiliser cette commande de faon optimale, et configure
rapidement des messages avec entre clavier.

Avec CHOICE, il devient trs facile de crer des petits menus choix uniques.
ATTENTION : Cette commande nest pas incluse sous Windows NT ! Elle peut
nanmoins tre importe depuis un autre poste ou installe avec PowerBatch.
Vous pouvez lancer cet assistant l'aide du menu "Outils".


5) Le convertisseur HTML

Le HTML est un langage "universel" de description de document, utilis notamment
sur Internet pour btir des pages Web.
Ne croyez pas que le HTML est indissociable du Web, et que l'utilisateur doit tre
connect sur Internet pour lire ce type de fichiers : il sera trs bien lu hors-ligne, chez
une personne ne possdant mme pas Internet.
L'avantage est que ce langage est lu par diffrents logiciels (navigateurs) sur la
majorit des systmes d'exploitation (Windows, MacOS, Linux). Utilisez donc la
conversion dans ce format si vous voulez exporter le code d'un fichier Batch sur un
autre ordinateur sans altration du code; ou pour le transfrer par Internet, sur un
site web, ou par e-mail.

PowerBatch met galement en relief le code converti (les commandes DOS seront
distingues, les commentaires mis en italique etc.).

Le fichier sera cre, et une nouvelle icne apparatra lendroit dsign. Double-
cliquez sur l'icne pour lancer le navigateur associ aux fichiers HTML (en gnral
Microsoft Internet Explorer)











Formation Batch www.astase.com
Page 66/90
14) Programmation avance

Dans ce bref et dernier chapitre, mon but est de vous montrer que lon peut vraiment
tout faire avec le langage batch, si lon a en quelque sorte une me de bricoleur .

Jai dit dans le premier chapitre que des fonctions comme le traitement numrique,
lentre clavier (de mots, et non pas de lettres, telles quon le fait avec la commande
CHOICE) ntait possible quavec laide de programme externe.

En fait, au moyen de plusieurs astuces, on peut raliser certaines fonctions
intressantes :

Par le dtournement de certaines commandes (utilisation de certaines de
leurs fonctions pour raliser dautres tches que celles prvues lorigine),

Par le scriptage de certains logiciels : en effet, certains programmes
peuvent excuter des commandes inscrites dans des fichiers (par ex : debug
ou ftp), il suffit donc dcrire dans des documents les instructions excuter
par le programme puis de lappeler en lui indiquant quel fichier de commandes
excuter,

Par la redirection des rsultats de commande dans des fichiers, puis la
recherche et lextraction dinformations partir de commandes spcifiques
(commande FIND par exemple)

Exemple : ce fichier Batch dtermine si Windows est lanc, si lon est sous DOS ou
si nous sommes en mode DOS rel, juste aprs avoir quitt Windows :

Ce listing fait appel au programme MEM (affichage de la mmoire libre/utilise sur le
systme), et tente de chercher certains fichiers en mmoire significatifs de lutilisation
de MS-DOS. Suivant les rsultats, il affiche un message correspondant.

@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
Formation Batch www.astase.com
Page 67/90

Vous pouvez faire mieux ! Le programme DEBUG, permettant entre autres dafficher
ltat de la mmoire, peut tre utilis pour calculer la taille de mmoire disponible sur
un disque, etc

Si vous souhaitez vous lancer dans la haute voltige de la programmation Batch,
jetez un coup dil sur ces pages:


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


Utilisation de programmes spcifiques

Pour certaines tches, le dtournement de commandes MS-DOS sera inutilisable :
certaines fonctions sont absentes du DOS et ne peuvent pas tre bricoles, mme
avec force de bonne volont.

Il faut alors trouver des programmes qui travaillent en ligne de commande (mode
console) et/ou peuvent fonctionner de manire autonome par lenvoi de paramtres.
Beaucoup de dveloppeurs amateurs ont ainsi cres des utilitaires en langages
volus permettant de palier certaines lacunes du DOS et qui peuvent tre
utilises dans des Batchs. Jai moi-mme cre un Toolkit disponible sur
http://www.astase.com/products/powerbatch/toolkit.htm permettant dtendre les
capacits du DOS, ajoutant par exemple linteraction avec Windows ou la gestion
des nombres. Vous en trouverez de nombreux autres sur Internet. Si vous
connaissez un tant soit peu la programmation en langages compilables de haut
niveau (C, C++, Pascal, etc.), la cration dextensions pour le DOS ne devrait pas
vous poser de problmes.

Augmentation des capacits de la ligne de commande

Si vous connaissez Linux et sa puissante ligne de commande, et que vous vous
lamentez du peu defficacit de celle de Windows, ne dsesprez pas : vous pouvez
retrouver vos habitudes grce des programmes spcifiques comme MinGW. Il se
compose, en plus du compilateur GCC pour Windows, dune suite doutils mulant
ceux de Linux, en ligne de commande, dont grep, cut, expr, find, sort, tar, etc. Ceux-
ci sont gratuits et exploitable dans vos Batchs. Mme si Windows restera Windows
avec ses limitations et ses spcificits, vous pourrez bnficier dun nouveau jeu de
commandes diversifi. A vous les ls *.exe | grep "win" | sort | uniq
et autres joyeusets !

A tlcharger sur http://www.mingw.org


Formation Batch www.astase.com
Page 68/90

Pour finir

J'espre que vous avez suivi ce tutoriel avec plaisir, et que cette initiation la
programmation en langage Batch ne vous a pas parue trop complique.

Je vous conseille de trouver des d'autres didacticiels et documents prsentant des
astuces de programmation et d'autres sujets non traits dans ce document. D'autre
part, si vous souhaitez utiliser des commandes d'extensions MS-DOS pour vos
Batchs (saisie clavier, oprations logiques, tirages de nombres alatoires, etc) je
vous invite tlcharger le PowerKit Batch partir de http://www.astase.com

Si vous remarquez des erreurs, ou pensez que des complments sont ncessaires,
merci de me contacter via le site web !

Bonne continuation

Adrien REBOISSON





















Formation Batch www.astase.com
Page 69/90
ANNEXE 1] Intgration MS-DOS dans Windows 9x
Source . PC Poche Pratique Optimisation des fichiers svsteme de Windows 95 Micro
Application (ISBN . 2-7429-0659-2)

1) Caractristiques techniques pour Windows 9x

3) Si vous ouvrez une fentre DOS sous Windows, MS-DOS 7.0 est lanc, les
fichiers CONFIG.SYS et AUTOEXEC.BAT sont utiliss pour installer un
environnement de travail pour tous les programmes,

4) Si un programme refuse de fonctionner dans la fentre DOS ou en plein cran,
vous devrez le lancer en mode MS-DOS, un pur mode rel du DOS suffisamment
identique lancien MS-DOS pour que tous les programmes DOS puissent
fonctionner dans ce mode.

5) MS-DOS fonctionne maintenant en Machine virtuelle , presque exclusivement
dans le mode protg du processeur. Un petit nombre de pilotes en mode rel,
une espce en voie de disparition, sont exploits dans le mode 8086 virtuel. Le
nouveau DOS est plus rapide et plus stable,

6) Ces machines virtuelles peuvent tre ouvertes en nombre pratiquement illimit,
lutilisation simultane de plusieurs programmes DOS est donc possible sans
causer de problmes,

7) Chaque machine virtuelle peut-tre configure indpendamment des fichiers de
configuration comme AUTOEXEC.BAT et CONFIG.SYS,

8) Les noms de fichiers longs peuvent tres utiliss dans une fentre DOS. Il faut
simplement se souvenir que lespace ne fonctionne plus comme sparateur entre
les paramtres, mais quil faut utiliser des guillemets :

COPY Exemple de texte.doc C:\TEXTES\CHP1

9) La taille des fentres DOS est modifiable car les caractres sont affichs en des
polices TrueType . La taille des caractres est automatiquement adapte
celle de la fentre dans le mode AUTO,

10) Les oprations de couper/copier/coller dans des fentres DOS sont gres, et les
presse-papier peut-tre utilis entre les applications DOS Windows :

Formation Batch www.astase.com
Page 70/90
11) Le chargement des pilotes souris devient inutile, car la souris est
automatiquement gre en mode fentre ou plein cran,

12) Vous avez plus de mmoire : presque tous les pilotes importants comme
NET.EXE ou SHARE.EXE existent en version 32 Bits et peuvent utiliser toute la
mmoire, y compris celle situe au-del de la limite des 1 Mo. Les programmes
qui refusaient de fonctionner pour cause de mmoire insuffisante ont une
nouvelle chance

13) Tous les paramtres dune fentre DOS peuvent tre entrs dans une bote de
dialogue Proprits . Lditeur PIF appartient au pass ; les donnes sont
toujours stockes dans les fichiers PIF pour des raisons de compatibilit mais
cela ne vous concerne pas (en fait les donnes sont enregistres dans la base
des registres, et le fichier PIF se contente de pointer vers elles)

14) La convention de noms UNC est utilise dans la fentre DOS :

DIR \\TEST\FILES\TEXTS


Permet un accs direct une ressource partage par la cration dans le
rseau dun nom similaire prcd de :

\\NOMSERVEUR\NOMPARTAGE

2) Prfrences dExcution et fichiers PIF

Les fichiers PIF, contenant les paramtres dexcution pour les programmes DOS
lancs sous Windows, existent encore sous Windows 95, mais lditeur si chtif a t
remplac par une bote de dialogue de configuration barde donglets.
Lutilisateur na plus besoin denregistrer les donnes explicitement comme fichier
PIF. Quand il a termin sa saisie, le fichier PIF est automatiquement enregistr, sous
mme nom que le programme et dans le mme rpertoire que celui-ci.
Lutilisateur na plus qu cliquer sur le fichier PIF plutt que de lancer directement le
programme pour que celui-ci soit dmarr avec les prfrences dexcution choisies.


Ci-dessus : Lexcutable PB.EXE et son fichier PIF associ PB.PIF


Formation Batch www.astase.com
Page 71/90
Pour diter les prfrences dexcution du programme, vous devez cliquer sur le
bouton droit de la souris, choisir la commande Proprits , et choisir les options
proposes dans les divers onglets de la bote de dialogue.


Les prfrences du programme

Longlet Programme est rserv la modification des paramtres de base, comme
le nom du programme ou le rpertoire utilis.

Nom : Le nom afficher dans la barre de titre du programme.

Ligne de commande : Entrez ici le chemin daccs ainsi que les paramtres
ventuellement ncessaires lappel du programme.

Rpertoire de travail : Cest le rpertoire utilis par le programme pour lire et crire
ses donnes (textes dans le cas dun traitement de texte)

Fichier de commandes : Entrez ici le nom du fichier batch que vous dsirez excuter
avant le lancement du programme. Ce fichier peut par exemple dclarer et initialiser
des variables denvironnement ou effectuer des copies de secours de certains
fichiers. Vous pouvez galement entrer ladresse dun autre programme EXE ou
COM ou une commande dos excuter.

Touche daccs rapide : Vous pouvez affecter dans cette zone certains raccourcis
clavier pour lancer directement lapplication.

Excuter : Comment afficher la fentre (normale, en plein cran, etc)

Fermer en quittant : Dsirez vous que la fentre DOS soit automatiquement ferme
une fois lapplication termine ?

Le bouton Changer dicne permet daffecter une autre icne au programme.

Le bouton Paramtres avancs permet daller plus loin :

Loption Empcher la dtection de Windows par des programmes MS-DOS
permet de forcer le fonctionnement des applications DOS qui refusent de tourner si
elles dtectent la prsence de Windows. Cette option est inactive par dfaut. Si elle
est active, le programme ainsi configur ne recherche pas la prsence de Windows.

Loption Suggrer le mode MS-DOS appropri signifie que Windows vrifie quil
peut excuter le programme correctement. Sil sagit dun programme spcial , le
mode MS-DOS est suggr et configur dans la bote de dialogue. Si vous inactivez
cette option, un programme dlicat sera lanc malgr les risques de plantage.




Formation Batch www.astase.com
Page 72/90



Les polices de caractre

Longlet Police permet daffecter une police de caractre au programme. Ce
paramtre nest utile quavec les programmes fonctionnant en mode texte en non en
mode graphique.

La partie gauche indique si la police existe en BitMap, en TrueType ou dans les deux
formes. Vous pouvez galement dfinir la taille des caractres. Les deux zones du
bas reproduisent leffet du paramtre slectionn sur la taille de la fentre ( gauche)
et sur celle des caractres ( droite).

Avec la taille AUTO, la taille des caractres sera automatiquement adapte celle
de la fentre.


Lallocation de la mmoire

Lallocation des divers types de mmoire est presque entirement automatique sous
Windows 9x install sur un ordinateur moderne.
Vos interventions se limiteront aux cas les plus complexes.

Vous pouvez entrer la quantit de mmoire conventionnelle, EMS (tendue), et XMS
(pagine) ncessaire au bon fonctionnement de cette application, ainsi que la
mmoire conserver en mode protg.

Si vous cochez loption Protg de la mmoire conventionnelle, votre programme
sera protg contre les accs sauvages de ce programme la mmoire. Ce
mode de fonctionnement met en uvre des procdures de vrification actives
intervalles trs rapprochs, ce qui ralentit la vitesse dexcution du programme, mais
cela vous assure une meilleure stabilit du systme.

Grer la fentre

Les paramtres de cet onglet concernent laffichage, lexception des deux
dernires options (grouper Performance), dont la place est sur longlet prcdent.
Loption Emulation ROM rapide commande au pilote graphique la simulation des
fonctions vido de la mmoire ROM, ce qui apporte un gain en performance.
La deuxime option, Allocation de la mmoire dynamique permet Windows
dutiliser immdiatement la mmoire libre par le passage une application
tournant en mode texte, ce qui occupe moins de mmoire que les applications en
mode graphique.

Les autres options de cet onglet concernent laspect de la fentre : affichage en
mode fentre ou plein cran, affichage de la barre doutils et utilisation des
paramtres Taille, Position et Police de la fentre doivent tre utiliss chaque
dmarrage de ce programme.
Formation Batch www.astase.com
Page 73/90



Longlet Divers

Le nom de cet onglet peut faire croire quil ne contient que quelques options
dimportance secondaire, or cest exactement linverse.

Les paramtres accessibles dans longlet Divers peuvent par exemple, sils sont
maladroitement dfinis ; vous interdire de quitter une fentre DOS.

Explication des options des options mises votre disposition :

Autoriser lcran de veille : Lactivation de cette option inclut le programme en cours
dexcution dans la fentre DOS dans la surveillance de linactivit de lutilisateur par
lconomiseur dcran Windows.

dition rapide : Cette option permet de slectionner des lments de la fentre DOS
en vue de lutilisation du presse-papiers. Dans la configuration par dfaut, vous
devez utiliser le menu.

Mode exclusif : Si la souris cause des problmes, ce mode peut y remdier tout en
autorisant lusage de la souris. Attention tout de mme : la souris nest plus utilisable
sous Windows 95, et vous ne pourrez plus revenir linterface graphique en cliquant
au-dehors de la fentre DOS.

Toujours suspendre : Quand cette option est active, lexcution du programme est
suspendue lorsquil nest pas utilis.

Avertir si encore actif : Si cette option est active, un message apparat lorsque vous
tentez de fermer un programme DOS encore actif.

Sensibilit lattente : Ce curseur affecte au programme un dlai pendant lequel le
processeur attend votre reprise dactivit avant daffecter son temps de calcul une
autre application. Pour augmenter les ressources du programme, dplacez le
curseur en direction de Basse, pour diminuer ses ressources, rapprochez le curseur
de Haute.

Collage rapide : Cochez cette case pour coller les donnes du presse-papier en
mode rapide. Si les donnes ne sont pas correctement colles, alors dcochez cette
case.

Touches de raccourci de Windows : Si certains raccourcis normalement rservs
Windows sont importants dans votre application DOS, vous pouvez dsactiver la
prise en charge des raccourcis Windows dcochs dans cette section.




Formation Batch www.astase.com
Page 74/90


3) Fonctionnement en mode MS-DOS

Lorsque Windows est redmarr en mode MS-DOS, il se rduit un petit module de
dmarrage dans la mmoire et laisse un environnement de travail adquat pour le
mode MS-DOS en mode rel :

Le PC tourne en mode rel calqu sur celui de la version 6.0 de MS-DOS,

Tous les programmes Windows sont arrts,

Les fonctions de rseau ne sont plus disponibles, mais elles peuvent tre
charges par la commande NET du fichier AUTOEXEC.BAT ou dans la
configuration individuelle de dmarrage.

Windows redmarre automatiquement quand vous quittez lapplication MS-DOS.
Toutes les applications doivent avoir t termines correctement et leurs donnes
enregistres.

Quand vous configurez un programme pour le mode MS-DOS, via longlet
Paramtre de programme avancs de nouvelles options souvrent vous.

Pour que le programme soit dmarr en mode MS-DOS rel, vous devez cocher la
case Mode MS-DOS.

Si vous dsactivez loption Avertir avant de passer en mode MS-DOS vous ne
serez pas invit refermer toutes les autres applications avant le passage de
Windows dans ce mode.
Ne dcochez cette case que si vous avez pris lhabitude de fermer les applications et
denregistrer vos donnes avant de lancer le programme.

Ensuite vous avez le choix entre :

Utiliser la configuration actuelle, dfinie entre autres par AUTOEXEC.BAT et
CONFIG.SYS pour le programme,

Utiliser une configuration spcifique de AUTOEXEC.BAT et CONFIG.SYS
pour le programme. Dans ce cas, les zones de texte CONFIG.SYS et
AUTOEXEC.BAT doivent tre remplies avec le contenu des fichiers
adquat comme sils taient rellement lancs depuis votre disque.

Si vous souhaitez utiliser une configuration spcifique sans entrer de lignes de code,
cliquez sur le bouton Configuration .

Dans la bote de dialogue, cochez les modules dont vous avez besoin et laissez
Windows le soin dinscrire la ligne adquate dans le liste de configuration.

Formation Batch www.astase.com
Page 75/90
Enfin, signalons galement que sil existe un fichier DOSSTART.BAT sur votre
systme, celui-ci sera excut lors du lancement du mode rel. Vous pourrez donc
inscrire toutes les commandes que vous dsirez utiliser dans tout appel au mode
MS-DOS.

Pensez toujours tester des programmes DOS rcalcitrants sous Windows en mode
DOS rel. Dans la majorit des cas, vos problmes seront rsolus.

Information : Les prfrences dexcution standard pour toutes les fentres DOS
sont dfinies dans le fichier COMMAND.PIF. Si vous modifiez les proprits dans la
fentre DOS, chaque programme DOS sera lanc sur la base des paramtres
modifis.





























Formation Batch www.astase.com
Page 76/90


ANNEXE 2] Diffrences de lintgration Batch entre
Windows et Windows XP (NT)

Windows NT (terme regroupant tout OS bas sur un noyau NT 32 bits :
Windows NT4, Windows 2000, et Windows XP) possde un moteur dintgration
Batch tout a fait diffrent que les ditions 3.x/9x/Me de Windows. MS-DOS a presque
disparu du systme (nanmoins compatible avec les programmes crits pour cet
OS), et la traditionnelle Console MS-DOS sest transforme en Invit de
commande prenant en charge la majorit des anciennes commandes DOS, mais
ajoutant aussi beaucoup dextensions : Windows NT conserve et amliore presque
toutes les fonctionnalits de MS-DOS.

Ce chapitre propose un aperu des diffrences majeures entre Windows
XP (Windows XP tant un systme NT, les informations relatives cet OS peuvent
sappliquer Windows 2000 et dans une moindre mesure Windows NT4) et les
ditions personnelles de Windows (Windows 95, Windows 98 et Windows Me). Pour
plus dinformations, tapez HELP dans linvite de commande spcifique, ou entrez
une commande, suivie de / ? .

Les commandes ajoutes dans Windows XP sont les suivantes : at,
cacls, convert, diskperf, dosonly, echoconfig, endlocal, findstr,
ntcmdprompt, popd, pushd, pushd, setlocal, start, title, &&,||,&,(
),.,^,;,.

Les commandes modifies dans Windows XP sont les suivantes : chcp,
cmd, del , dir, diskcomp, diskcopy, doskey, format, vkeyb,label,
mode, more, path, print, prompt, recover, rmdir, sort, xcopy.

Les commandes non prises en charge par Windows XP par rapport
Windows 95/98 sont les suivantes : assign, choice, ctty, dblspace,
defrag, deltree, dosshell, drvspace, emm386, fasthelp, fdisk,
include, interlnk, intersrv, join , memmaker, menucolor,
menudefault, menuitem, mirror, msav, msbackup, mscdex,
msd,numlock, power, scandisk,smartdrv, submenu, sys, undelete,
unformat, vsafe.


Les proprits, comme le titre de la console ou sa couleur peuvent tre
modifis soit via le menu systme dune console, soit dans vos batchs grce aux
commandes :

COLOR : Change les couleurs par dfaut du premier et de larrire plan de la
console (pour plus dinformations, tapez dans une console COLOR / ?

TITLE : Dfinit le titre de la fentre pour une fentre DOS

Par exemple :
Formation Batch www.astase.com
Page 77/90

Color 10
Title Copie des fichiers


Modifie le titre de console en Copie des fichiers , et affiche du texte noir sur un
fond bleu-fonc.

Les extensions des scripts console sont .bat , mais aussi .cmd

L'historique des commandes permet de relancer une commande dj tape.
L'historique complet est obtenu par la touche F7, la touche F8 permet de rechercher
dans l'historique la commande la plus rcente ayant le mme dpart que ce qui est
indiqu sur la ligne de commande.

Grande amlioration de la commande IF :
- Possibilit dinclure la clause ELSE qui introduit du code excut si la
condition nest pas satisfaite. ELSE doit tre sur la mme ligne que la
commande suivant IF. Vous pourrez ainsi crire :

IF EXIST NomFichier (
DEL NomFichier
) ELSE (
ECHO NomFichier est introuvable !
)

ou bien :

IF EXIST NomFichier (DEL NomFichier) ELSE ECHO NomFichier
est introubale

Dans les deux cas, si NomFichier nexiste pas, le texte derreur est affich,
sinon, le fichier est effac.

Si les extensions de commande sont actives, les commandes ci-dessous
sont utilisables :

IF Chaine1 OP Chaine2 Commande

OP doit-tre remplac par :
EQU : gal ,`
NEQ : diffrent de,
LSS : infrieur (<),
LEQ : infrieur ou gal ,
GTR : suprieur (>),
GEQ : suprieur ou gal .

Ainsi, la commande ci-dessous dtecte une excution correcte dun
programme en allant OK si ERRORLEVEL est infrieur ou gal 1:

Formation Batch www.astase.com
Page 78/90
IF %ERRORLEVEL% LEQ 1 Goto OK
`



IF DEFINED Variable Commande

Cette commande est identique IF EXIST , mais fonctionne avec des
variables. Ainsi, si celle-ci est dfinie (existe, a t dclare ultrieurement), la
commande Commande est excute.

IF CMDEXTVERSION nombre Commande

ou %CMDEXITVERSION% est une chane reprsentant la valeur actuelle
de la version de linterprteur de commandes. Ce numro sera incrment
chaque amlioration significative de linterprteur. Si des nouveauts
apparaissent dans une version future de Windows, vos batchs pourront
dtecter la version de linterprteur sur laquelle ils fonctionnent et excuter
des commandes en consquence.

Nouvelle commande SET (Commentaires extraits de laide en ligne sur la
commande)

Deux nouvelles options ont t ajoutes la commande SET :

SET /A expression
SET /P variable=[ChaneInvite]

L'option /A spcifie que la chane droite du signe gal est une expression
numrique qui est value. L'valuation de l'expression est assez simple et prend en
charge les oprations suivantes dans l'ordre dcroissant de prsance :

() - groupement
! ~ - - oprateurs unaires
* / % - oprateurs arithmtiques
+ - - oprateurs arithmtiques
<< >> - dcalage logique
& - ET au niveau du bit
^ - OU exclusif au niveau du bit
| - OU au niveau du bit
= *= /= %= += -= - attribution
&= ^= |= <<= >>=
, - sparateur d'expression

Si vous utilisez des oprateurs logiques ou des nombres, vous devez mettre
l'expression entre guillemets. Toute chane non numrique dans l'expression est
traite comme une variable d'environnement dont les valeurs sont converties en
nombres avant d'tre utilise. Si un nom de variable d'environnement est spcifi
mais n'est pas dfini dans l'environnement en cours, alors la valeur zro est utilise.

Cela vous permet de faire des oprations avec les valeurs d'une variable
Formation Batch www.astase.com
Page 79/90
d'environnement sans avoir entrer des signes % pour obtenir ces valeurs. Si SET
/A est excut partir de la ligne de commande en dehors d'un script de commande,
alors la valeur finale de l'expression est affiche.

L'oprateur d'assignation requiert un nom de variable d'environnement gauche du
cet oprateur. Les valeurs numriques sont des nombres dcimaux, moins qu'ils
ne soient prfixs par 0x pour les valeurs hexadcimales et 0 pour la notation octale.
Donc 0x12 est identique 18 et 022. Notez que la notation octale peut tre
confuse : 08 et 09 ne sont pas valides car 8 et 9 ne sont pas des nombres valides en
notation octale.

L'option /P vous permet de fixer la valeur d'une variable avec une ligne entre par
l'utilisateur. Elle affiche la chane ChaneInvite spcifie avant de lire la ligne entre.
La ChaneInvite peut tre vide.

La substitution de la variable d'environnement a t amliore comme suit :

%PATH:ch1=ch2%

dveloppe la variable d'environnement PATH, remplaant chaque occurrence de
"ch1" dans le rsultat dvelopp par "ch2". "ch2" peut tre une chane vide pour
supprimer toutes les occurrences de "ch1" de la sortie dveloppe. "ch1" peut
commencer par un astrisque, auquel cas la commande traitera la chane partir du
dbut et jusqu' la premire occurrence du reste de ch1.

Vous pouvez aussi spcifier des sous-chanes pour une expression :

%PATH:~10,5%

dveloppe la variable d'environnement PATH et utilise seulement 5 caractres
partir du onzime (dcalage de 10) dans le rsultat sous forme dveloppe. Si la
longueur n'est pas spcifie, tout le reste de la valeur de la variable est trait. Si l'une
des valeurs (dcalage ou longueur) est ngative, alors le nombre utilis est la
longueur de la valeur de la variable d'environnement ajoute au dcalage ou la
longueur donn.

%PATH:~-10%

extrait les 10 derniers caractres de la variable PATH.

%PATH:~0,-2%

extrait tous les caractres sauf les deux derniers de la variable PATH.

Enfin, la prise en charge de l'expansion retarde de variables d'environnement a t
ajoute. Cette prise en charge est toujours dsactive par dfaut, mais peut tre
active/dsactive via l'option de ligne de commande /V dans CMD.EXE. (Voir CMD
/?)

La prise en charge de l'expansion retarde de variables d'environnement est utile
Formation Batch www.astase.com
Page 80/90
pour contourner les limites de l'expansion en cours qui se produit la lecture d'une
ligne de texte et non son excution. L'exemple suivant montre le problme caus
par l'expansion immdiate de variables :

set VAR=avant
if "%VAR%" == "avant" (
set VAR=aprs
if "%VAR%" == "aprs" @echo Cela marche si vous lisez
ce message
)

n'affichera jamais le message car la variable %VAR% prsente dans les deux
instances de IF est remplace la lecture de la premire instance de IF, tant donn
que le corps de IF, instruction compose, est logiquement inclus. Donc IF compris
dans l'instance compare "avant" avec "aprs" et il n'y aura jamais galit. De mme,
l'exemple suivant ne fonctionnera pas comme prvu :

set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%

car la liste des fichiers du rpertoire ne sera PAS cre, et en fait la variable LIST
prendra le valeur du dernier fichier trouv. Une fois encore cela est d au fait que
%LIST% n'est tendu qu'une fois, lorsque FOR est lu et ce stade la variable LIST
est vide. Donc la boucle FOR excute est :

for %i in (*) do set LIST= %i

qui donne toujours LIST la valeur du dernier fichier trouv.

L'expansion retarde de variables d'environnement vous permet d'utiliser un autre
caractre (le point d'exclamation) afin d'tendre les variables d'environnement durant
l'excution. Si l'expansion retarde de variables est active, les exemples ci-dessus
peuvent tre crits comme suit afin de fonctionner comme vous le souhaitez :

set VAR=avant
if "%VAR%" == "avant" (
set VAR=aprs
if "!VAR!" == "aprs" @echo Cela marche si vous lisez
ce message
)

set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%

Si les extensions de commandes sont actives, alors plusieurs variables
d'environnement dynamiques peuvent tre dveloppes sans apparatre dans la liste
de variables affiche par SET. Les valeurs de ces variables sont calcules
dynamiquement chaque fois que la variable est dveloppe. Si l'utilisateur dfinit
explicitement une variable avec un de ces noms, alors cette dfinition crase la
Formation Batch www.astase.com
Page 81/90
dfinition dynamique dcrite ci-dessous :



%CD% - se dveloppe en la chane du rpertoire en cours.

%DATE% - se dveloppe en la date actuelle en utilisant le mme format que la
commande DATE.

%TIME% - se dveloppe en l'heure en cours en utilisant le mme format que la
commande TIME.

%RANDOM% - se dveloppe en un nombre alatoire compris entre 0 et 32767.

%ERRORLEVEL% - se dveloppe en la valeur en cours de ERRORLEVEL

%CMDEXTVERSION% - se dveloppe en le numro de version des extensions du
processeur de commande en cours.

%CMDCMDLINE% - se dveloppe en la ligne de commande originale qui a appel le
processeur de commande.

Expansion des capacits de la commande FOR (Commentaires extraits de
laide en ligne sur la commande) :

FOR %variable IN (ensemble) DO commande [paramtres]

%variable : Spcifie un paramtre remplaable par une seule lettre.

(ensemble) : Ensemble de fichiers. Caractres gnriques autoriss.

commande : Commande excuter pour chaque fichier.

paramtres : Liste des paramtres ou des options pour la commande
spcifie.

Pour utiliser la commande FOR dans un programme de commandes, spcifiez
%%variable au lieu de %variable. Les noms de variables respectent la casse, donc
%i est diffrent de %I.

Si les extensions de commandes sont actives, les formes supplmentaires
suivantes sont prises en charge pour la commande FOR :

FOR /D %variable IN (ensemble) DO commande [paramtres]

Si ensemble contient des caractres gnriques, alors la correspondance se fait sur
les noms de rpertoires au lieu des noms de fichiers.



Formation Batch www.astase.com
Page 82/90




FOR /R [[lecteur:]chemin] %variable IN (ensemble) DO commande
[paramtres]

Parcourt l'arborescence de rpertoires depuis la racine [lecteur:]chemin, en
excutant FOR dans chaque rpertoire de l'arborescence. Si aucun rpertoire n'est
spcifi aprs /R alors le rpertoire en cours est utilis. Si ensemble est seulement
un point (.) alors seule l'arborescence de rpertoires sera numre.

FOR /L %variable IN (dbut,pas,fin) DO commande [paramtres]

L'ensemble est une squence de chiffres allant de dbut fin, incrment de pas.
Ainsi (1,1,5) gnre la squence 1 2 3 4 5 et (5,-1,1) gnre la squence (5 4 3 2 1)

FOR /F ["options"] %variable IN (ensemble-fichiers) DO
commande [paramtres]
FOR /F ["options"] %variable IN ("chane") DO commande
[paramtres]
FOR /F ["options"] %variable IN ('commande') DO commande
[paramtres]

ou, si l'options usebackq est utilise :

FOR /F ["options"] %variable IN (ensemble-fichiers) DO
commande [paramtres]
FOR /F ["options"] %variable IN ('chane') DO commande
[paramtres]
FOR /F ["options"] %variable IN (`commande`) DO commande
[paramtres]

ensemble-fichiers est un ou plusieurs noms de fichiers. Chaque fichier est
ouvert, lu et trait avant de passer au fichier suivant de ensemble-fichiers. Le
traitement consiste lire dans le fichier, le dcouper en lignes individuelles de texte
puis analyser chaque ligne en zro ou plusieurs parties. Le corps de la boucle FOR
est ensuite appel avec la ou les valeurs de variables prenant la valeur de la ou des
parties trouves. Par dfaut, /F transmet la premire partie spare par un blanc
dans chaque ligne de chaque fichier. Les lignes vides sont ignores. Vous pouvez
outrepasser le comportement d'analyse par dfaut en spcifiant le paramtre
optionnel "options". Ceci est une chane entre guillemets contenant un ou plusieurs
mots-cls spcifiant diverses options d'analyse. Les mots-cls sont :







Formation Batch www.astase.com
Page 83/90



eol=c - spcifie un caractre de commentaire de fin de ligne
(un seul)

skip=n - spcifie le nombre de lignes ignorer en dbut
de fichier.

delims=xxx - spcifie un ensemble de dlimiteurs. Ceci remplace
l'ensemble de dlimiteurs par dfaut qui sont
l'espace et la tabulation.

tokens=x,y,m-n - spcifie les parties de chaque ligne devant tre
transmises au corps de FOR chaque itration.
Ceci provoquera l'allocation de noms de variables
supplmentaires. La forme m-n est une tendue
spcifiant les parties allant de m n. Si le
dernier caractre de la chane tokens= est une
astrisque, alors une variable supplmentaire est
alloue et reoit le texte restant dans la ligne
suivant la dernire partie analyse.

usebackq - spcifie que la nouvelle smantique est en place,
lorsqu'une chane entre guillemets inverss est
excute en tant que commande et une chane entre
guillemets simples est une chane de commande
littrale et permet l'utilisation de guillemets
doubles pour citer des noms de fichiers.

Quelques exemples explicatifs :

FOR /F "eol=; tokens=2,3* delims=, " %i in (monfich.txt) do
@echo %i %j %k

analyse chaque ligne de monfich.txt, en ignorant les lignes commenant par un
point-virgule, en transmettant les 2nde et 3me parties de chaque ligne au corps de
FOR, les parties tant dlimites par des virgules et/ou espaces. Notez que le corps
de FOR rfrence %i pour l'obtention de la 2nde partie, %j pour l'obtention de la
3me partie et %k pour l'obtention des parties restantes aprs la 3me. Pour les
noms de fichiers contenant des espaces, placez les noms de fichiers entre guillemets
doubles. Afin d'utiliser ainsi les guillemets doubles, vous devez galement utiliser
l'option usebackq, faute de quoi les guillemets doubles seraient interprts comme
dfinissant une chane littrale analyser.

%i est dclare explicitement dans la dclaration FOR et %j et %k sont dclares
implicitement via l'option tokens=. Vous pouvez spcifier jusqu' 26 paries via la
ligne tokens=, tant que cela ne provoque pas de tentative de dclaration de variable
plus leve que la lettre 'z' ou 'Z'. Souvenez-vous que les variables de FOR se
composent de lettres, tiennent compte de la casse, sont globales et que plus de 52
Formation Batch www.astase.com
Page 84/90
ne peuvent pas tre actives la fois.


Vous pouvez aussi utiliser la logique d'analyse FOR /F sur une chane en plaant
ensemble-fichiers entre guillemets entre les parenthses, en utilisant des
guillemets simples. Elle sera traite comme une ligne d'entre simple provenant d'un
fichier puis analyse.

Enfin, vous pouvez utiliser la commande FOR /F pour analyser les donnes en sortie
d'une commande. Faites ceci en plaant des guillemets inverss autour de
ensemble-fichiers entre les parenthses. Elle sera traite comme une ligne de
commande transmise un CMD.EXE enfant et la sortie est garde en mmoire et
analyse comme s'il s'agissait d'un fichier. Ainsi l'exemple suivant :

FOR /F "usebackq delims==" %i IN (`ensemble`) DO @echo
%i

numrerait les noms de variables d'environnement de l'environnement en cours.

De plus, la substitution de rfrences de variables FOR a t amliore.
Vous pouvez maintenant utiliser la syntaxe optionnelle suivante :

%~I - tend %I en supprimant les guillemets (")
%~fI - tend %I en nom de chemin d'accs reconnu
%~dI - tend %I en lettre de lecteur uniquement
%~pI - tend %I en chemin d'accs uniquement
%~nI - tend %I en nom de fichier uniquement
%~xI - tend %I en extension de fichier uniquement
%~sI - chemin tendu contenant uniquement des noms courts
%~aI - tend %I en attributs du fichier
%~tI - tend %I en date/heure du fichier
%~zI - tend %I en taille du fichier
%~$PATH:I - parcourt les rpertoires de la variable
d'environnement PATH et tend %I en nom du
premier fichier reconnu trouv. Si le nom de la
variable d'environnement n'est pas dfini ou
que le fichier n'est pas trouv par la recherche,
alors ce modificateur tend en chane vide

Vous pouvez combiner les modificateurs pour obtenir des rsultats composs :

%~dpI - tend %I en lettre de lecteur et chemin d'accs uniquement
%~nxI - tend %I en nom de fichier et extension uniquement
%~fsI - tend %I en nom de chemin complet avec noms courts
uniquement
%~dp$PATH:i - parcourt les rpertoires lists dans la variable
d'environnement PATH la recherche de %I et tend
en lettre de lecteur du premier trouv.
%~ftzaI - tend %I en DIR comme ligne en sortie

Formation Batch www.astase.com
Page 85/90
Dans les exemples ci-dessus %I et PATH peuvent tre remplacs par d'autres
valeurs valides. La syntaxe %~ se termine par un nom de variable FOR valide.
Le choix de noms de variables en majuscules comme %I facilite la lecture
et empche toute confusion avec les modificateurs qui ne tiennent pas compte
de la casse.

Dfinition des variables denvironnement : nayant plus de Autoexec.bat ,
les variables denvironnement sont dfinis via : Panneau de Configuration >
Systme > Avanc > Variables denvironnement.

Voil pour ce qui est nouveauts. Il existe bien dautres diffrences dintgrations,
mais seule les majeures et les plus utilises ont t abordes.

























Formation Batch www.astase.com
Page 86/90


ANNEXE 3] Mots cls ou notions connatre
abords dans ce tutoriel

>Systme dexploitation DOS
MS-DOS tait lorigine un logiciel dexploitation (sorte de super programme
faisant le lien entre vous et lordinateur) relativement ancien, orient ligne de
commande.
Cela signifie que pour communiquer avec lui il faudra connatre des mots cls ainsi
quune syntaxe spcifique, ce qui videmment maintenant, avec lre des OS
graphiques (icnes, pointer-cliquer, etc) fait de lui un systme un peu obsolte.
Sous Windows 95 et 98, il est encore prsent au dmarrage de la machine, sinon, il
est seulement simul par Windows pour garder une compatibilit avec les
programmes fonctionnant sous cet OS.
Fourni avec Windows, mul ou excut en mode rel, il constitue un monde
intressant pour excuter certains programmes ou excuter des commandes
automatises avec des scripts batch.

>Fichier
Un fichier est un ensemble de donnes variables enregistres sur un priphrique de
stockage. La taille et la nature du contenu des fichiers varient suivant le type de
contenu, lapplication cratrice ainsi que lutilisation que lon peut en faire.
Un fichier peut contenir par exemple une image, un texte, un son, une animation ou
bien encore les quatre en mme temps.
Pour des raisons techniques, le DOS rel , cest--dire celui excut lors du
dmarrage en mode MS-DOS dune machine sous Windows ne gre que des noms
de fichiers de 8 caractre. Par exemple, alors que sous Windows un nom de fichier
Lettre Elise serait correct, il faudra vous contenter de LETTRE~1 sous
DOS. Lespace est galement proscrit ainsi que dautres caractres comme * ou
/ qui servent en interne MS-DOS.
Le tilde ( ~ ) sert une ventuelle discrimination des noms fichiers longs
automatiquement raccourcis par le DOS : en effet, Lettre Elise 1 et Lettre a
Elise 2 se transformeraient naturellement tous deux sous DOS en LETTREAE .
MS DOS nommera donc LETTRE~1 le premier fichier, et LETTRE~2 le
second fichier. Le nom nexcde pas 8 caractres, et les deux fichiers sont distincts.
Enfin, MS-DOS (comme Windows) identifie le type de fichier par une extension,
cest--dire un code 3 caractre spar du nom de fichier par un point. Par
exemple, un fichier dextension txt reprsente un fichier texte, un fichier
dextension doc un document cr avec Microsoft Word, et un fichier bmp
une image bitmap.
Ces extensions sont rserves pour un type de donnes dfinies, cest pour cela
quil est dconseill de les modifier manuellement (la modification de lextension ne
changeant videmment pas le type du contenu du fichier !)
La longueur totale dun nom de fichier sous MS-DOS est donc de 11 caractres (on
pourra ventuellement parler de format 8+3).
Formation Batch www.astase.com
Page 87/90
Voici quelques noms de fichiers valides : TEXTE.TXT (fichier TeXTe),
MSDOS.SYS (fichier SYStme), MSPAINT.EXE (programme EXEcutable),
etc.

>Dossiers (ou rpertoires, catalogues)
Les rpertoires sont un moyen lmentaire de regrouper, de classer et de
hirarchiser tous les fichiers. Comme dans une grande armoire que serait
lordinateur, lutilisateur (vous) pourrait classer ses documents (fichiers) dans autant
de chemises (dossiers) quil le souhaiterait.
Ainsi, vous pourrez mettre tous les fichiers portant sur un mme sujet dans un mme
dossier, de nom appropri. Bien sr, le nom des dossiers et leur hirarchie restent
entirement dfinissables par vous-mme, et vous pouvez virtuellement
imbriquer autant de dossiers que vous le souhaitez. Par exemple, le fichier
IMPOTS.DOC reprsentant vos impts pays en 1994 pourrait tre class dans
le dossier DOCS lui-mme contenu dans le dossier IMPOTS , lui-mme
contenu dans le dossier ARCHIVES dun disque de stockage.

>Disques et lecteurs
Toutes les donnes sur lesquelles vous travaillez doivent tres stockes sur un
disque de stockage, cest--dire un support permanent permettant lcriture, la
lecture et la sauvegarde de votre travail.
MS-DOS ne reprsente pas les disques, mais leurs lecteurs. Ainsi, il fait
correspondre des lettres aux lecteurs installs sur votre machine.
Par convention, le lecteur de disquettes est appel a , le disque dur principal
c . Dautres lecteurs peuvent coexister, comme un second lecteur de disquette en
b ou un lecteur de CD-ROM en e , etc
Avant daccder vos fichiers, vous devrez donc toujours spcifier un nom de disque
pour que MS-DOS puisse situer le priphrique sur lequel vous souhaitez travailler.
Le nom des lecteurs est toujours suivi de deux points. Ainsi, le lecteur de disquettes
est accessible en a : , et le disque dur en c : , etc.
Certains mdias exploits par les lecteurs peuvent tre en lecture seule ou protgs
en criture, ce qui signifie que vous ne pourrez que lire les donnes quils
contiennent, et non crire quelque chose par-dessus.
En outre, vous devez veiller dans le cas de lecteurs amovibles (a: par exemple) ce
quils possdent un disque si vous souhaitez sauvegarder des donnes dans ce
dernier, au risque de provoquer une erreur de priphrique.

>Arborescence
Larborescence est lensemble de tous les rpertoires d un mme disque.
La base dun disque (cest--dire un niveau o nous nappartenons aucun
rpertoire) est appel racine de ce disque, et symbolise par un \ .
Larborescence est donc lensemble des rpertoires partir de la racine dun disque.
Larborescence est souvent reprsente de manire schmatique, afin de visualiser
niveaux et sous-niveaux dun disque.
Ainsi, un disque d : contenant quatre rpertoires : DOS , DOCS ,
ARCHIVES , et DIVERS , dont le dossier DOCS contenant lui-mme un
sous-dossier TEST contenant lui-mme un autre dossier FILES sera affich
lcran laide de la commande DOS tree de cette manire :

Formation Batch www.astase.com
Page 88/90




D:\
| DOS
| ARCHIVES
| DIVERS
| DOCS
| ---- TEST
| |------ FILES

>Chemin daccs
Pour accder un fichier sur un disque, il ne suffit pas de connatre juste son nom, il
faut aussi, dans la plupart des cas connatre sa localisation exacte dans
larborescence.
Un fichier texte FICHIER.TXT sur c : , dans le rpertoire TEST contenu lui-
mme dans DEMO aura un chemin daccs correspondant la concatnation
des noms de dossiers et du disque, spars par des dlimiteurs \ :
C:\TEST\DEMO\FICHIER.TXT

>Commandes
Pour que MS-DOS comprenne ce que vous voulez faire, il faudra communiquer
avec lui par des mots standardiss, analyss par un programme nomm
interprteur .
tant des mots cls rservs, aucun fichier ou dossier ne doit se nommer par le nom
dune commande. De plus, les commandes existent souvent sous deux formes :
abrges et entires (exemple : MKDIR et MD)

Une commande interne est un mot reconnu par l'interprteur qui constitue un
lment du langage MS-DOS.

Une commande externe est en ralit un programme fourni avec l'interprteur. Il est
plac dans un rpertoire spcifique afin que MS-DOS puisse le reconnatre comme
un lment 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 rpertoire d'un disque, est en fait un programme excutable.

>DOS rel, DOS mul
Il existe deux types dexploitations de MS-DOS :

Le mode rel, cest--dire o MS-DOS est le seul matre bord sur votre
systme. Il sadresse directement votre processeur, et gre tout seul votre
mmoire. Ce mode est excut lors dun dmarrage en mode MS-DOS, et dans ce
cas, Windows se retire presque entirement de la mmoire ; ou mieux, lors du
dmarrage de Windows lallumage de lordinateur. Dans les nouvelles versions de
Windows (Me, 2000, XP), ce mode nexiste plus.
Formation Batch www.astase.com
Page 89/90


Le mode mul (ou mode protg) : Cest lorsque vous voyez les fameuses
fentres MS-DOS dans Windows. En fait, ce nest pas le vrai DOS, ce nest
quune simulation du DOS rel, agrment de nouvelles fonctions (autant de
machines DOS virtuelles que vous les souhaitez, par exemple). Ce mode savre
naturellement problmatique pour certains programmes DOS spciaux, dans ce cas,
il vaut mieux recourir au mode rel)








































Formation Batch www.astase.com
Page 90/90

























Tutoriel Batch
Copvright 1999 - 2003 Adrien REBOISSON
http://www.astase.com

Merci a Romain TARTIERE et a toutes les autres personnes qui ont pu
collaborer a la creation de ce document '