Vous êtes sur la page 1sur 52

Tutoriel sur la programmation Batch

Par Adrien REBOISSON - rabusier@aol.com

Table des matires


Introduction Qu'est ce qu'un fichier Batch Crer des fichiers batch avec PowerBatch Notions basiques importantes I] Cration du fichier batch "Hello, World !" Votre premier fichier Batch Comment fonctionne-t-il ? La commande ECHO L'cho local Afficher une ligne vide Commentez votre code Les caractres accentus II] Utilisation de commandes DOS dans un fichier Batch Qu'est-ce qu'une commande DOS La variable PATH Arguments passs une commande, un fichier Crez vos commandes avec les Batch. III] Variables d'environnement Qu'est ce qu'une variable d'environnement Dfinir, modifier, supprimer, une variable d'environnement Lire les valeurs des variables d'environnement Insrer des dfinitions dans Autoexec.bat IV] Sauts inconditionnels Qu'est ce que les sauts inconditionnels La commande GOTO La commande LABEL V] Excution conditionnelle quoi servent les commandes d'excution conditionnelles Les diffrentes formes de ces commandes et l'intrt de leurs combinaisons : IF, IF NOT, IF EXIST

VI] Boucles La commande For Do VII] La compilation Qu'est ce que la compilation Comment compiler un fichier Batch Les erreurs de compilation VIII] Les bordures Gnrer des bordures en utilisant l'assistant dans PowerBatch IX] Ecriture dans des fichiers criture en mode ajout criture en mode crasement criture de rsultats de commande Redirection vers le priphrique virtuel NUL X] Appel d'autres fichiers Batch Utilisation de fichiers Batch come sous-programme Lancement d'autres fichiers Batch XI] Travail avec ERRORLEVEL Utilisation de la commande ERRORLEVEL XII] 5 autres fonctions de PowerBatch Test ligne, test bloc, test pas pas Les modles L'assistant XCOPY La commande CHOICE Le convertisseur HTML XIII] Lintgration MS-DOS sous Windows XIV] Programmation avance.

Avertissement : Ce tutoriel n'a pas pour vocation de remplacer un livre ddi la programmation Batch, mais surtout d'initier le programmeur dbutant cette technique. Il n'est pas exempt d'erreurs, si vous en reprez, merci de me contacter par mon e-mail

rabusier@aol.com
La version la plus rcente de ce manuel sera toujours publie sur http://www.astase.com

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 games superjeu.exe Cela aurait le mme effet que si vous tapiez sous DOS les commandes suivantes : C:\Chemin> cd \ [Entre] C:\> cd games [Entre] C:\games> superjeu.exe [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.

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 telles que 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 existent, selon les cas).

2) Cration de fichiers Batch avec PowerBatch


Il existe un logiciel nomm PowerBatch permettant de crer trs facilement des fichiers Batch, en utilisation libre en plus. Nous allons apprendre nous en servir pour crer nos fichiers Batch. 1) Tlcharger le fichier depuis http://www.astase .com 2) Dcompressez le fichier ZIP, lisez attentivement les fichiers "Lisez moi", puis installez le logiciel .

3) Notions basiques importantes


>Systme dexploitation DOS
Le DOS est 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. Nanmoins, 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 enregistrs 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 correcte, 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). Voici quelques noms de fichiers valides : TEXTE.TXT (fichier TeXTe), MSDOS.SYS (fichier SYStme), MSPAINT.EXE (programme EXEcutable), etc.

>Dossiers (ou rpertoires)


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 reste entirement dfinissable 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 stocks 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 quil possde 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 reprsent 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 :

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 luimme 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. Dans les nouvelles versions de Windows (Me, XP), ce mode nexiste plus. 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)

1) Cration du fichier Batch "Hello, World"


Nous allons nous atteler la programmation d'un fichier affichant l'cran le traditionnel "Hello World" en langage Batch. La capture d'cran ci-dessous vous montre l'cran du logiciel lorsque vous le lancez.

Dans la zone de texte, tapez :

Echo Hello World !


Qu'est ce que vous venez d'crire ? Vous avez crit la commande "Echo" permettant d'afficher du texte l'cran.

Cette commande exige un paramtre : le texte qu'elle doit afficher l'cran. Le paramtre est donc plac droite de la commande, spar par un espace. En ralit, ECHO est utilis pour faire sortir tous types de donnes dans n'importe quel priphrique (et mme dans un fichier). Dans notre cas, nous l'utilisons pour faire sortir des donnes sur l'cran d'un ordinateur, nous allons donc dire pour l'instant que ECHO est une commande permettant d'afficher du texte l'cran. Remarquez l'absence de guillemets, par rapport d'autres de langages de programmation exigeant que les variables littrales soient distingues par ces derniers. NOTE IMPORTANTE : MS-DOS n'est pas sensible pour les commandes la diffrence entre les majuscules et les minuscules, que vous criviez echo ou Echo, ou bien encore ECHO ou EcHo, le rsultat sera le mme. PowerBatch possde une fonction pratique permettant de tester le fichier Batch en cours. Pressez F6, ou excutez la commande "Test du fichier courant" situ dans le sousmenu "Tests" du menu "Programme". Une fentre DOS apparat, avec le rsultat suivant :

Le DOS nous a bien affich notre rsultat, MAIS il apparat comme si on venait d'entrer les commandes sparment sous DOS : En effet, on distingue l'invite (gnralement c:\Program Files\PowerBatch>), la commande (Echo Hello, World !), son rsultat dessous, puis un second invite. Nous souhaiterions que seuls les rsultats des commandes apparaissent l'cran. Il va falloir utiliser l'cho local . L'cho local est une variable qui, selon quelle est sur on (active) ou off (dsactive), permet ou de voir uniquement les rsultats des commandes entres. Ci-dessus, l'cho local est activ, puisque l'on voit l'invite DOS et les commandes comme si on les avait taps sous DOS.

Il va falloir dsactiver cet cho en tapant :

Echo off
Qu'est ce que vous venez d'crire ? Vous avez crit la commande "Echo" permettant d'afficher du texte l'cran, mais vous avez transmis un paramtre particulier la commande : il s'agit du paramtre "off", qui dsactive l'cho local. Cette commande accepte aussi le paramtre "on" qui permet d'activer cet cho. Vous avez donc dans le cas prsent dsactiv l'cho local. Testez de nouveau le fichier en crivant donc :

Echo off Echo Hello World !


Puis pressez ensuite F6 :

Voil comment le programme s'est droul : L'cho est sur ON : le programme affiche toutes les commandes avant de les excuter. L, le programme a rencontr la commande "echo off". Il l'a affich, puis l'a excut. L'cho est maintenant sur OFF, il est dsactiv. Le programme rencontre la commande "Echo Hello, World !". Il se contente donc d'afficher "Hello, World !" l'cran.

Nanmoins, on voit toujours l'invite en haut, ainsi que "echo off". Il nous faut donc trouver un moyen de les supprimer. La commande "@" est adapt notre cas : elle permet de dsactiver immdiatement l'cho pour une ligne, il suffit juste de faire prcder la ligne de ce signe. On a donc :

@Echo off Echo Hello World !


Pressez F6 pour excuter le fichier et batch Et l, on a enfin que ce que l'on cherche :

A retenir
La commande "echo", pour afficher un texte, Qu'est ce que l'cho local, Le paramtre "off" pour dsactiver l'cho local, "on" pour l'activer, Le caractre "@" pour dsactiver l'cho local sur une ligne.

Information : lexcution de la commande echo sans paramtres permet dafficher lcran si Echo est sur ON ou si il est sur OFF.

Aller plus loin :


La commande "echo." permet d'afficher une ligne vide. On peut donc afficher un petit texte, par exemple :

@Echo off Echo Bonjour, c'est l'ordinateur qui te parle ! Echo. Echo N'ai pas peur je ne te veux aucun mal. Echo. Echo J'espere que tu vas bien. Echo Moi, c'est le cas ! Echo.
Donne :

Commentez votre code Essayons de prendre les bonnes habitudes tout de suite Pour vous et sur le moment, votre code vous parat parfaitement clair. Mais le sera til dans un mois ou lu par une autre personne ? Il est donc ncessaire d'insrer des remarques, appeles "commentaires" dans vos fichiers. La commande "REM" (REMark) est l pour vous ! Il suffit simplement d'apposer votre commentaire aprs la commande, par exemple :

@echo off REM Formatage de la disquette Format a: REM Creation du dossier Backup sur a:\ Mkdir a:\backup\ REM Copie des fichiers Copy c:\backup\*.* a:\backup\*.*
La commande REM ne sera pas excute, mais vous aidera mieux comprendre ce que vous avez voulu faire lorsque vous n'avez pas tudi le Batch depuis longtemps.

Attention aux caractres spciaux ! Les caractres spciaux sont les accents, signes divers comme /, %, etc. N'utilisez pas d'accent, car MS-DOS va remplacer les caractres accentus par des symboles :

@echo off echo J'ai t reue mon examen !


Donne :

Utilisez plutt la fonction d'accentuation de PowerBatch (Menu "Commandes", "sousmenu "Caractres spciaux", articles "Accent grave", "Accent circonflexe", "Accent aigu", etc.)

La commande CLS La commande CLS (Clear the Screen) permet deffacer les donnes affiches actuellement lcran, ce qui nettoie la zone de texte. Les textes prcdemment lcran sont effacs, et les donnes recommencent tre affiches en haut gauche de la fentre DOS. Utilisez rgulirement CLS pour plus de lisibilit dans lexcution de vos batchs. Information : Si la commande CLS est la dernire de votre fichier batch, alors la fentre DOS sera automatiquement ferme par Windows, sans besoin dintervention manuelle pour que le programme soit arrt (clic sur la case de fermeture)

A retenir
La commande "echo." Pour afficher une ligne vide La ncessit de commenter son code (Commande REM) viter d'utiliser directement des caractres spciaux, comme des caractres accentus. La commande CLS pour effacer lcran

Astuce pour PowerBatch : Utilisez l'article "Standard Batch" du menu "Modle" pour crer un batch automatiquement avec @echo off.

2) Utilisations de commandes standard DOS dans un fichier Batch


Pour excuter une commande DOS, il vous suffit d'insrer la commande dans le fichier batch. Par exemple, voici un fichier listant le contenu du disque C:, allant dans le dossier Jeux, puis excutant le fichier SuperJeu.exe :

@echo off echo Listage du disque C:\ dir c: echo Va dans le dossier jeux cd jeux echo Lance SuperJeux.exe Superjeux.exe

Notre but n'est pas de vous apprendre toutes les commandes MS-DOS, vous tes cens connatre les plus communes. Nous allons donc tudier ce qu'est une commande MS-DOS en ralit. RAPPEL : Nous sommes sous DOS, les noms de fichiers sont limits 8 caractres (sinon, on tronque les deux derniers caractres par ~x, x reprsente un nombre "discriminant" destin distinguer deux ventuels noms communs) Il y a deux possibilits : Soit la commande DOS est intgre l'interprteur COMMAND.COM. C'est le cas des commandes les plus communes comme DIR, CD, etc Soit la commande est en ralit un excutable DOS, c'est--dire que c'est une application qui est intgre sous la forme d'une commande standard. C'est sur ce cas que nous allons nous pencher.

1) Comment un excutable peut-tre considr comme une commande ? Une commande est par dfinition un "mot" que l'on peut entrer o que l'on soit (que l'on soit dans le rpertoire A ou le rpertoire B), et qui ne ncessite pas qu'on indique son chemin d'accs, et qui bien sr agit physiquement ou logicielement sur votre ordinateur directement ou l'aide de paramtres. RAPPEL : Pour lancer un fichier .EXE, .COM ou .BAT, il n'est pas ncessaire de prciser l'extension de ces derniers. Pour lancer Superjeu.exe, vous n'tes pas oblig de taper :

Superjeux.exe
Vous pouvez simplement entrer :

Superjeu
pour que MS-DOS "comprenne" que vous souhaitez lancer le programme "Superjeu.exe". Mais ou sont donc stocks ces commandes ? Ces commandes sont stockes "naturellement" dans C:\DOSSIER_DE_WINDOWS\COMMAND\, donc, dans la majorit des cas, dans C:\WINDOWS\COMMAND\ Si vous possdez un fichier .exe, .com ou .bat, et que vous souhaitiez l'tablir en tant que commande DOS, copiez le simplement dans ce rpertoire. Par exemple, prenons l'exemple de DisBonjour.bat

Il contient une commande permettant d'afficher l'cran "Bonjour". Copiez-ce fichier dans C:\WINDOWS\COMMAND\ Tapez ensuite DisBonjour.bat => Votre texte apparat l'cran Plus fort : tapez simplement DisBonjour => Votre texte apparat aussi l'cran

Rsultat : Pour "ajouter" des commandes MS-DOS, copiez des excutables DOS d'extension .bat, .exe, ou .com dans le rpertoire "COMMAND" du dossier de Windows.

2) La variable PATH et les autres rpertoires d'ajout possibles D'autres rpertoires peuvent dfinir des chemins d'accs potentiels des commandes. Pour voir les chemins d'accs possibles installs sur votre machine, tapez "path" dans une session MS-DOS. Voil un exemple possible de rsultat :

On peut voir que les rpertoires d'accs sont au nombre de 3, et spars par des points-virgules : C:\Windows (2 fois, il s'agit sans doute d'une erreur d'un logiciel) C:\Windows\Command C:\Cntx Cela veut dire que n'importe quel fichier .exe, .bat, ou .com peut tre lanc comme une commande dans l'environnement DOS : Conclusion : Pour "ajouter" des commandes MS-DOS, copiez des excutables DOS d'extension .bat, .exe, ou .com dans un des rpertoires spcifis par la variable "Path".

3) Ajouter un chemin d'accs la variable path "Path" est une variable d'environnement, c'est dire, (nous le verrons plus en dtails plus tard) que cette variable reprsente une valeur accessible n'importe ou et n'importe quand dans l'environnement DOS. Dans le cas actuel, cette variable est modifiable, nous allons donc inclure un autre chemin d'accs dans cette variable. REGLE 1 : Une variable d'environnement est identifie la lecture lors d'une dfinition par deux "%" autour de lui. En effet, l'excution, MS-DOS remplace le contenu d'un "mot " entour par deux "%" par sa valeur. Dans le cas actuel, "Path" peut-tre lue en appelant "%PATH%". Pour ajouter un chemin d'accs, on fera donc : PATH=%PATH%;CHEMIN_A_AJOUTER En effet : Le premier PATH est en criture (pas besoin de %PATH%) Le second PATH est destin inclure l'ancien path, et doit contenir la variable PATH (d'o %PATH%) Le point-virgule est destin sparer le chemin prcdent du nouveau chemin. CHEMIN_A_AJOUTER reprsente le chemin d'accs ajouter Imaginons que la variable PATH contienne "C:\WINDOWS;C:\WINDOWS\COMMAND". Nous souhaitons ajouter le chemin C:\MESJEUX\SUPERJEUX On inscrira donc dans un fichier Batch ou directement dans l'interprteur COMMAND.COM : PATH=%PATH%;C:\MESJEUX\SUPERJEUX Ce qui donne pour le DOS : PATH=C:\WINDOWS;C:\WINDOWS\COMMAND ;C:\MESJEUX\SUPERJEUX Maintenant, imaginons que vous souhaitez lancer Superjeu.exe situ dans C:\MESJEUX\SUPERJEUX. Or, on vient de mettre le chemin dans le Path.

Par consquent, on peu simplement taper :

Superjeu.exe
Ou, comme une commande standard :

Superjeu
Cela signifie aussi que tous les autres fichiers situs dans le "%path%" pourront-tre lancs comme des commandes standard. Par exemple, si "c:\WINDOWS" est dans le Path, entrez Winver pour lancer C:\windows\winver.exe et afficher la version de Windows (Bien sur ce programme n'est pas fait pour le dos, c'est donc Windows qui le lancera automatiquement).

4) Paramtres envoyes une commande ou un programme. On appelle paramtre tous les arguments passs un programme ou une commande. Les paramtres sont spars par des espaces.

Par exemple, dans : 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. En fait, FORMAT est C:\WINDOWS\COMMAND un programme (FORMAT.EXE) localis dans

Ce programme reoit donc comme argument tous les paramtres envoys par l'intermdiaire du DOS. Votre Batch peut, on le verra plus en dtail plus tard, recevoir neuf paramtres spars par des espaces, comme un programme standard comme FORMAT.EXE peut le faire. Ce sont des variables d'environnement spciales destines spcifiquement au fichier Batch qui est utilis : chaque Batch peut donc lire les arguments, si il y en a, qui lui sont envoys lors de son lancement. RETENIR : Dans Windows, il est impossible d'envoyer des paramtres en double cliquant sur un fichier. Pour envoyer des paramtres un fichier dans Windows, vous devez le faire soit par un raccourci, en ditant la "destination" du lien, soit par un fichier PIF (*.pif) permettant se dfinir les prfrences d'excution d'une application DOS.

Vous pouvez donc lire 10 variables relatifs au arguments passs votre programme. Ces variables vont de %0 %9 . La variable %0 contient le chemin d'accs au programme, %1 le premier paramtre, %2 le second paramtre jusqu' %9 qui contient le neuvime paramtre envoy au batch. Exemple : crez avec PowerBatch un fichier ressemblant celui-ci dessous, puis utilisez la fonction "Test avec paramtres" de PowerBatch (Menu "Programme", sous-menu "Tests") pour envoyer des paramtres au fichier (ou procdez par l'intermdiaire du DOS) :

@echo off echo L'adresse de ce fichier est %0 echo Le premier parametre est %1 echo Le second parametre est %2 echo Le troisieme parametre est %3 echo Le quatrieme parametre est %4
Dans le cas ou vous n'envoyez aucun 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 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 ex :

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


Vous pouvez procder plus facilement avec PowerBatch : entrez simplement ces paramtres dans la boite de dialogue affiche juste avant nimporte quelle test : le fichier est excut avec les paramtres entrs.

Ce qui donne :

Ce qui est bien sr parfaitement logique. Nous apprendrons plus tard nous en servir dans un programme : tester si le fichier a des paramtres, agir en fonction, etc

A retenir
Mme si ces notions peuvent vous sembler un peu disparates, elles sont importantes pour aborder la suite de la formation : Une commande peut-tre un fichier, dont le rpertoire est inscrit dans la variable %PATH% Un fichier peut-tre lanc sans prciser son chemin d'accs si son rpertoire est dans la variable %PATH% La variable %PATH% est modifiable par le DOS ou un fichier Batch Comment un fichier peut recevoir des arguments, et comment y accder via les variables spciales %x

Information : La commande shift permet de dcaler le contenu des variables spciales %x. Par exemple, le contenu de la variable %9 passe dans %8, %8 dans %7, etc.

3) Variables d'environnement
Une variable d'environnement, nous l'avons dj dit plus haut, reprsente une valeur accessible n'importe ou et n'importe quand dans l'environnement DOS. Pour visualiser les variables d'environnement actives sur votre ordinateur, il vous suffit de taper la commande set ce qui donne par exemple :

Prcisons que, dans le langage Batch, la seule facon de stocker des donnes est de les associer des variables d'environnement. Il n'existe pas de variables "locales" que d'autres fichiers Batch ne pourraient pas connatre (sauf les variables sous la forme %x) 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 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). Il est important de savoir que le contenu de ces variables est dtruit une fois l'ordinateur teint ou la session DOS termine. Il faut donc, si ces variables doivent tre prsentes chaque session et si elles ne sont pas automatiquement dclares par Windows, les dfinir dans Autoexec.bat (qui est lui lanc chaque dmarrage). Par exemple, la variable "BLASTER" est dfinie dans Autoexec.bat Dfinir une variable d'environnement Pour dfinir une variable d'environnement, faites : Set NomVariable = Valeur de la variable Nous souhaitons dfinir une variable "VersionWindows" contenant la version de Windows (Dans notre cas Windows 98 SE (Seconde Edition)) Nous allons donc taper dans le DOS, ou crire dans un fichier batch :

Set VersionWindows = 98 SE
Validez la commande puis excutez le Batch. Il semble que rien ne se passe : normal, cette commande ne produit pas de rsultat visible l'cran. Pour voir si notre ajout a t pris en compte, il suffit de taper "set" pour voir si notre variable a t ajoute la liste de celles dj dfinies sur notre ordinateur.

Dans notre cas, il apparat :

Notre variable a bien t ajoute. Notons que : Cette variable ne sera dtruite qu' l'extinction de l'ordinateur ou la fin de la session DOS N'importe quel autre programme peut lire, modifier ou rcrire sur cette variable.

Redfinir une variable d'environnement Il suffit de rcrire la commande avec une nouvelle valeur, qui viendra craser l'ancienne, par exemple :

Set VersionWindows = Windows Millenium


Dans ce cas, l'ancienne valeur crasera la nouvelle.

Supprimer une variable d'environnement Il faut simplement assigner une valeur nulle la variable, par exemple :

Set VersionWindows =
La variable est maintenant supprime. Utiliser une variable d'environnement Pour utiliser une variable d'environnement, il faut l'encadrer par des "%". Il n'y a que la commande SET qui ne demande pas de signe "%" pour l'argument reprsentant le nom de la variable dfinir : en effet, on ne lit pas la valeur de la variable, mais on la dfinit.

Lors de l'excution du Batch, lorsque l'interprteur rencontre un nom encadr de deux "%", il substitue ce nom par la valeur de la variable qu'il reprsente, si elle existe. Exemple :

Echo %VersionWindows% Echo La version de Windows est %VersionWindows% Set VersionWindows = %VersionWindows% - 32 Bits
La premire ligne va simplement afficher la valeur de la variable "VersionWindow" La seconde ligne va afficher "La version de Windows est "suivie de la valeur de la variable "Version Windows". Enfin, la dernire ligne va redfinir la variable "VersionWindows" par sa valeur, laquelle on ajoute " 32 Bits "(Dans notre cas la version devient "98 SE 32 Bits".

A retenir
Qu'est-ce qu'une variable d'environnement Comment dfinir, modifier ou supprimer une variable d'environnement Encadrer une variable de "%" pour lire sa valeur Les variables d'environnement se perdent l'extinction de Windows ou la fermeture de la session DOS. Les variables qui doivent donc tre dfinies chaque dmarrage devront donc tre dfinies dans Autoexec.bat

Dans PowerBatch, vous pouvez facilement agir sur les variables en utilisant le sous menu "Variables" du menu "Commandes"

4) Saut inconditionnel
Le langage Batch vous permet d'utiliser des commandes de boucle, c'est a dire de rpeter un bloc de commandes indfiniment. Nous allons tudier dans ce chapitre la commande "Goto". C'est une commande de saut inconditionnelle, qui ne peut tre arrte (ou l'aide de commandes que vous ne connaissez pas encore), par consquent vous allez tre amen fermer de faon "brutale" des programmes DOS, et vous rencontrerez sans doute ce message :

Cela signifie que vous tentez d'arrter un programme DOS qui est toujours actif. Cliquez sur "Oui" pour quitter le programme. 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. 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 : La premire est un "Label", c'est--dire une tiquette pose dans le programme l'endroit ou la boucle doit commencer. La seconde 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.

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", reva au label , etc

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.

Par exemple

:Debut est un bon nom 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 identiques. Vous obtiendrez un rsultat de ce type :

Signe que notre programme a bien boucl

A retenir
La commande "Goto" permet d'aller au label du mme nom La marque ":Label" est un "mot" prcd de deux points (":"), correspondant un repre utilis par la commande Goto Un saut inconditionnel "boucl "n'est pas "cassable" autrement que par CTRL+C Un saut inconditionnel peut aussi tre utilis pour sauter des morceaux de code Un saut inconditionnel peut-tre utilis avec la commande "IF" pour excuter ou ne pas excuter du code en fonction d'une condition.

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 : seul la fin de la ligne est excute, par consquent seule 1 seule 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>
Attention 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. Mme si nous avons dit plus haut que MS-DOS ne faisait pas la diffrence entre les commandes crites en majuscules et celles crites en minuscules, il diffrencie tout de mme les contenus des variables comparer. Par exemple, si l'utilisateur entr "/Aide" ou "/aide" au lieu de "/AIDE", la condition ne sera pas valide. Vous pouvez associer d'autres conditions la commande IF. Voici les possibilits dont vous disposez :

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"=="%ScoreNormal" echo Vous etes un nul

IF EXIST Fichier
Vrifie l'existence du fichier dsign. Si il existe, le reste de la ligne est trait, sinon on passe la ligne suivante. Ce type de commande peut-tre aussi utilis sous la forme "If not exist", dans ce cas le reste de la commande est trait que si le fichier n'existe pas. Il est aussi important de noter que vous n'tes pas oblig d'utiliser des guillemets puisque le paramtre reprsentant le fichier ne peut-tre nul.

Exemple :

If exist c:\Autoexec.bat autoexec.old

Copy

autoexec.bat

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. ATTENTION. Si vous devez tester plusieurs valeur 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 !


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>" Commande Commande :Suite Commande

== "<2>" Goto Suite 1 2 3

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

If not "%1"=="/?" Goto Suite Echo Voici l'aide de ce programme Echo Bla bla bla bla

:Suite Echo Pour commencer, pressez une touche Pause


Dans le cas si dessus, si le paramtre envoy au batch n'est pas "/?"; les commandes aprs "Suite" sont excutes. Sinon, le texte d'aide est affich.

A retenir
IF permet d'agir diffremment suivant qu'une condition est vraie ou fausse IF n'accepte qu'une seule commande sa droite, c'est pour cela que la commande "Goto" sera rgulirement utilise, pour excuter ou non certaines parties du Batch. Il y a diffrentes formes du IF : IF, IF EXIST, IF errorlevel et IF NOT qui peuvent tre combines.

6) Boucles
Aprs avoir fait connaissance avec une technique de la programmation des sauts inconditionnels (Goto), en voici une autre. Nous allons crer un petit 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 pointsvirgules. 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.

A retenir
Une boucle FOR DOpermet d'utiliser une variable prenant successivement toutes les valeurs d'une liste prdfinie, et l'utilisation de cette variable dans des commandes DOS ou Batch standard.

7) La compilation
PowerBatch vous permet de compiler un fichier Batch, cest--dire de le transformer en un excutable binaire Windows (.exe ou .com). Un excutable prsente en effet plus d'avantages qu'un fichier Batch : vitesse d'excution plus leve,code source "protg", format binaire inaltrable, etc La compilation n'est pas assure par PowerBatch, elle est effectue par un logiciel indpendant appel "Bat2exec". Ce dernier 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

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 la boite de dialogue :

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 d'ou vient l'erreur d'aprs le n de ligne transmis par Bat2exec.

A retenir
Compiler un fichier Batch, c'est transformer des commandes Batch en du code machine directement excutable par l'ordinateur : c'est donc transformer un fichier texte en un programme binaire d'extension ".com". La compilation est assure par un programme autonome nomm "Bat2exec". Si des erreurs de compilation surviennent, la cration du programme est interrompue et ne peut tre recommence que si cette erreur est corrige.

8) 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 facon :

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

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 pressepapier. 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.

9)

criture

dans

les

fichiers

Batch

Le caractre de redirection ">"


crire dans des fichiers
Vous pouvez crire dans des fichiers, l'aide de commande 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 rien ne nous empche de le faire sur le disque. Nous allons aussi utiliser les chevrons (">" ou "<") comme caractres de redirection. Vous devez veiller au nombre de chevrons, et leur sens, en effet, la sortie sur le fichier en dpendra. 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 euxmme pas. 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 lance 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. 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 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 euxmme 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 contenu d'une variable (Ici %CPT%) dans le fichier "score.dat" situ dans C:\MonJeu\Scores\ :

Echo %CPT%>>C:\MonJeu\Scores\Score.dat
Comme nous l'avons dit plus haut si le fichier n'existe pas, il sera cr et les donnes y seront inscrites sans gnrer d'interruptions ou d'erreurs sauf si le ou les rpertoires le contenant n'existent eux-mme pas. Par consquent, si les dossiers "MonJeu" et "Scores" ne sont pas prsent sur le disque au moment de l'excution de la commande, MS-DOS affichera un message d'erreur et le fichier ne sera pas cre. Il va galement de soi que la variable CPT doit-tre prcdemment dfinie, en utilisant une commande de la forme Set CPT=20000 .

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.

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 exists g:\NUL faitquelquechose , "if" testant si un fichier virtuel pouvant reprsenter n'importe quel lment en ralit sur le disque existe.

10) 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) c'est 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 on peut ensuite les appeler le nombre de fois que l'on veut partir de n'importe fichier Batch. Exemple :

CALL c:\MesBatch\Routine1.bat

11) Travail avec ERRORLEVEL


De nombreuses commandes MS-DOS revoient une valeur de retour 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. 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
Toutes les commandes DOS ne renvoient pas des valeurs d'erreur. Les commandes concernes n'utilisent que certaines valeurs.

12) 5 autres fonctions de PowerBatch


1) Le test ligne, le test de bloc, le test pas pas,
PowerBatch prsente diverses possibilites de test de vos fichiers batch : Le test ligne 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. Pour tester une ligne, vous devez entrer le numro de la ligne dans la zone de texte de la fentre. Vous pouvez automatiquement : - Afficher un echo de test, rappelant quelle ligne va tre excute - Dsactiver l'cho local - Effacer l'cran avant de commencer (commande CLS)

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

Cette fonction vous permet de tester un bloc de commandes, de la ligne X la ligne Y. Entrez la ligne de dpart dans la premire zone de texte, puis la ligne d'arret dans la seconde zone. Vous pouvez automatiquement : - Dsactiver l'cho local - Effacer l'cran avant de commencer (commande CLS)

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. 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 5 modles complets de Batch. Le plus utile est sans doute "Standard batch avec environnement tendu" car il permet de parer les erreurs dus un espace d'environnement insuffisant.

De plus, y sont ajouts deux "macros", ensemble de commandes rgulirement tapes, soit en dbut de batch, soit en fin de batch : le dbut de script insre @echo off pour dsactiver l'cho local, puis cls pour effacer l'cran, et le fin de script rtabli l'cho l'aide de la commande echo on.

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".

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 prsse, 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. 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.Doublecliquez sur l'icne pour lancer le navigateur associ aux fichiers HTML (en gnral Microsoft Internet Explorer)

13) Intgration MS-DOS dans Windows


1) Caractristiques techniques pour Windows 9x
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, 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. 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, Ces machines virtuelles peuvent tre ouvertes en nombre pratiquement illimit, lutilisation simultan de plusieurs programmes DOS est donc possible sans causer de problmes,

Chaque machine virtuelle peut-tre configure indpendamment des fichiers de configuration comme AUTOEXEC.BAT et CONFIG.SYS, 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 C:\TEXTES\CHP1


-

de

texte.doc

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, Les oprations de couper/copier/coller dans des fentres DOS sont grs,et les presse-papier peut-tre utilis entre les applications DOS Windows :

Le chargement des pilotes souris devient inutile, car la souris est automatiquement gre en mode fentre ou plein cran, 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 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) 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 pus 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

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 proposs 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.

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.

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.

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 si ils 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. 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.

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 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 leur fonctions pour raliser dautres tches que celles prvues originellement), Par le Scriptage de certains logiciels : en effet, certains programme peuvent excuter des commandes inscrites dans des fichiers, 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 determine si Windows est lanc, si lon est sous DOS ou si nous somme 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
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 Nanmoins, ces solutions savrent peu pratiques, lourdes mettre en uvre et plutt lentes. Si vous souhaitez vous lancer dans la haute voltige de la programmation Batch, jetez un coup dil sur ces pages: http://www.ericphelps.com/batch/ http://home7.inet.tele.dk/batfiles/ http://www.fpschultze.de/batstuff.html http://www.cableyorkton.com/users/gbraun/batch/ http://www.merlyn.demon.co.uk/batfiles.htm http://www.cybertrails.com/~fys/index.htm

Pour finir
J'espre que vous avez suivi ce bref 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 Toolkit Batch partir de http://www.astase.com

Si vous remarquez des erreurs, ou pensez que des complments sont ncessaires, merci de me contacter (rabusier@aol.com) Bonne continuation ! Rabusier

Vous aimerez peut-être aussi