Formation à la programmation Batch Par Adrien REBOISSON - http://www.astase.com Quatrième Édition !" & !" ' , # # !" !" %/ 0 2 !" # # $ % )* + , . ( 1 2 Table des matières I] Introduction 3 II] Les bases de la programmation Batch 10 III] Variables et paramètres 17 IV] Sauts, boucles 31 V] Exécution conditionnelle 34 VI] Boucles FOR 38 VII] Redirections 42 VIII] Appel d'autres fichiers Batch 48 IX] Travail avec ERRORLEVEL 49 X] Tâches d'administration courantes 51 Détails sur certaines fonctionnalités de PowerBatch XI] La compilation 58 XII] Les bordures 60 XIII] 5 autres fonctions de PowerBatch 63 XIII] Programmation avancée 66 ANNEXE I] L'intégration MS-DOS sous Windows 69 ANNEXE II] Batch sous Windows NT 76 ANNEXE III] Mots clés ou notions à connaître abordés dans ce tutoriel 86 Ce tutoriel n'a pas pour vocation de remplacer un livre dédié à la programmation Batch, mais surtout d'initier le programmeur novice ou l'administrateur peu habitué à ces techniques. Merci de ne pas hésiter à me signaler toute incohérence, erreur, ou suggestion à propos de ce document via . Je cherche également toute personne disponible pour étendre ce document ou développer certaines parties, etc... ( 1° Introduction ) Basiquement, un fichier Batch n'est rien de plus qu'un fichier texte contenant des commandes MS-DOS, et possédant 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 nécessite 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. Néanmoins, certaines commandes ne sont qu'utilisables dans les fichiers batch du fait de leur inutilité dans l'environnement de commande DOS. Leur utilité est, par exemple, quand il faut répéter toujours la même série de commandes. À titre d'exemple, nous pourrions évoquer le changement de répertoire et peut-être aussi la commande FORMAT qu'on fait souvent suivre de la commande CHKDSK pour vérifier si la disquette a bien été formatée. Exemple : Imaginons un fichier batch contenant les commandes suivantes : cd \ cd C:\TOOLS qmail -z:"default.txt" Cela aurait le même effet que si vous tapiez sous DOS les commandes suivantes : C:\Chemin> cd \ [Entrée] C:\> C:\TOOLS [Entrée] C:\TOOLS> qmail -z:"default.txt" [Entrée] L'intérêt des batch est donc d'automatiser des tâches répétitives effectuées sous DOS. Les fichiers batch sont donc très faciles à créer puisqu'un simple éditeur texte suffit (Comme EDIT, sous DOS) Les fichiers batch peuvent également utiliser toutes les commandes DOS, ce qui rend disponible pour le programmeur un grand nombre de fonctions. Enfin, leur taille est relativement légère par rapport à d'autres programmes, ce qui facilite leur transfert sur différents disques et supports de stockage. 3 Cependant... 5 Le langage Batch n'est pas compilé, il est interprété par COMMAND.COM ce qui rend plus lent l'exécution de programmes batch par rapport à des applications écrites directement en langage machine, 5 Les fichiers Batch sont directement éditables, donc votre code n'est pas "protégé" à la copie par d'autres programmeurs, 5 Enfin, et surtout, des opérations élémentaires comme le traitement de chaînes de caractères, d'opérations mathématiques, etc... n'existent pas sous DOS, ce qui implique l'usage de programmes externes (s'ils ont été créés, selon les cas). 2° Création de votre premier Batch ) Un fichier Batch étant à la base un fichier texte, vous pouvez créer vos batchs avec n'importe quel éditeur de texte. Attention : un fichier batch est un fichier texte « brut « (*.txt) sans formatage particulier (gras, italique, souligné). Personnellement, je trouve inutile d'utiliser un programme aussi lourd que Microsoft Word pour écrire un minuscule bout de fichier ASCII ! Préférez le bon vieux Notepad (bloc-note Windows) ou le simpliste mais néanmoins utile EDIT sous DOS, si vous êtes puriste... Si vous débutez ou si vous souhaitez gagner du temps, je ne peux que vous conseiller d'utiliser PowerBatch, un programme que j'ai moi-même écrit et qui facilite le test et le déboguage de vos batchs. Ce tutoriel est plus axé sur l'écriture de vos Batchs avec PowerBatch, mais le langage étant le même que vous utilisiez Notepad ou PowerBatch, ce tutoriel pourra tout de même 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 répertoire de Windows (C:\WINDOWS). Vous entreriez sous DOS : C:\Chemin> cd \ [Entrée] C:\> cd WINDOWS [Entrée] C:\WINDOWS> DIR *.DLL [Entrée] Il vous suffit de taper dans un fichier texte les commandes précédentes, comme si vous les entriez sous le prompt MS-DOS : 4 Facile, non ? La rédaction de votre Batch est terminée. À notre stade, nous avons créé un fichier texte - il faut maintenant le transformer en Batch. Là aussi, pas trop de difficultés : 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 s'exécute sous MS-DOS. Si vous êtes sous MS-DOS, il vous suffit d'appeler le fichier dans la ligne commande. Si vous êtes sous Windows, c'est plus simple puisqu'il suffit de double-cliquer sur l'icône du Batch pour que celui-ci s'ouvre dans une console MS-DOS (Une parfaite simulation du DOS par Windows), et ne s'exécute aussitôt : Que s'est-il passé ? Que vous soyez sous Windows ou sous MS-DOS, c'est le même processus : le fichier batch est transmis à l'interpréteur COMMAND.COM, qui analyse chaque ligne du batch et exécute les commandes rencontrées. Comme vous pouvez le constater, la différence avec d'autres programmes Windows est de taille : alors que les exécutables « normaux « sont des fichiers binaires constitués de macro-instructions destinés directement au processeur, les fichiers batchs contiennent les commandes DOS « telles qu'elles «, ce qui explique la nécessité d'un interpréteur pour « traduire « les commandes au processeur ; c'est le rôle de COMMAND.COM - il n'y a donc pas besoin de compiler le code. Si la fenêtre se ferme automatiquement sans vous laisser le temps de visualiser son résultat, rajoutez la commande « PAUSE « à la fin de votre batch. Même 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 fenêtre. Comme dit auparavant, les Batchs ont été conçus et s'exécutent sous MS-DOS. Le terme MS-DOS rappelle pour certains la « préhistoire « de l'informatique moderne et peut conduire à un désintérêt total en pensant que le DOS est un système obsolète et désormais « enterré «, qui ne mérite de nos jours plus grand intérêt. D'un côté c'est vrai : depuis l'avènement des OS graphiques comme Windows, MSDOS est en phase de déclin et est de plus en plus abandonné, tant par les développeurs que les utilisateurs. Certains utilisateurs des dernières versions de Windows ignorent même jusqu'à l'existence du DOS ! Et pourtant, si le DOS à part entière n'a pas grand intérêt, la cohabitation MSDOS/Windows est toujours de nos jours intéressante. Cherchez un langage simple pour automatiser vos opérations sous Windows : le système Batch est là ! Même sous Windows, et ce grâce au DOS, vous pourrez automatiser la plupart de vos opérations. Après la lecture de ce tutoriel, vous pourrez même je l'espère, développer 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 système ? A priori, les fichiers Batch ne sont pas plus dangereux que n'importe quelle application DOS ou Windows. En plus, il suffit d'éditer 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 sûr (en pièce jointe transmise par e-mail par exemple). Etant donné qu'une seule commande peut détruire votre système (ou l'endommager fortement le cas échéant), je vous conseille d'éditer tout fichier Batch non « sûr « avant l'exécution afin de vous rendre compte par vousmême de la dangerosité de ceux-ci. 6 3° Utilisation de PowerBatch ) Réalisons le Batch écrit plus haut dans le bloc note avec l'application PowerBatch. Démarrez PowerBatch en double-cliquant sur son icône ou via les raccourcis implantés dans le menu Démarrer. PowerBatch présente de nombreux avantages pour la réalisation de fichiers Batchs dont : o Affichage des différentes lignes dans le Batch, o Test rapide des fichiers - envois simplifiés des paramètres, o Support du format Batch natif (distinction des commandes, enregistrement direct en *.bat), o Insertion automatisée des commandes les plus fréquentes, o Nombreux assistants de création de commandes, o Débogueur intégré, etc... Au lancement, PowerBatch affiche une fenêtre similaire (légèrement différente selon les versions) : 7 Dans la zone de texte, entrez les commandes précédemment stockées 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 d'aller 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. o 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. o PowerBatch propose un support graphique au compilateur Bat2Exec. Pourquoi compiler vos batchs, puisque COMMAND.COM est là pour les interpréter ? Pour protéger votre code, accroître la vitesse d'exécution, utiliser le format binaire moins altérable que le format ASCII... Le compilateur Bat2exec transforme donc vos batchs en programme binaires d'extension « *.COM «. Pour plus d'informations, consultez le chapitre « Compilation de vos Batchs « dans ce manuel. o PowerBatch comporte des assistants, placés dans le menu « Assistants «, dont : o Le créateur de copies qui vous permet de créer le code correct pour une utilisation de XCOPY ou XCOPY32, o Le créateur de bordures vous permet de créer vos encadrements dans vos batchs. o L'Assistant d'entrée clavier permet de créer des demandes au clavier, ou de créer facilement des menus. o L'Assistant conversion en noms courts qui permet de transformer des noms de chemin Windows en noms au format court (format MSDOS). o Les Convertisseurs Ansi>OEM / OEM->Ansi qui permettent de convertir les jeux de caractères DOS vers Windows et réciproquement. o Vous pouvez également utiliser l'assistant de recherche des erreurs (dans le même menu). Celui-ci détectera les sauts incorrects dans votre Batch et les labels inutilisés (ceux-ci seront abordés plus loin dans le batch). o Le menu Fichier>Nouveau>Autres contient de nombreux exemples de fichiers Batch que vous pouvez réutiliser. o Le menu « Commandes « regroupe des commandes DOS ou Batch fréquentes et vous permet ainsi de les insérer dans vos Batchs en conservant leur syntaxe propre. o Le menu « Fichier « contient des formats d'exportation particuliers pour vos batchs, permettant de conserver la mise en forme de ceux-ci dans d'autres applications ou dans d'autres systèmes d'exploitation. Une section de ce tutoriel est consacrée à cette fonction. o Un inspecteur de variables d'environnement pour visualiser les variables déclarées sur votre système. L'utilisation de PowerBatch est détaillée dans le fichier d'aide 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 Créer, Ouvrir, Sauvegarder, et Tester vos batchs avec PowerBatch. Vous pouvez maintenant créer vos fichiers avec PowerBatch ou Notepad - mais dans ce dernier cas vous pourrez passer certains chapitres traitant de certaines fonctionnalités de PowerBatch. 2° Les bases de la programmation Batch ) Un fichier Batch n'est pas constitué uniquement de commandes DOS. Il existe, et c'est l'intérêt de celles-ci, des commandes* spécifiques aux fichiers batch. Voici les plus simples et les plus courantes. L'écho Le terme « Echo « a plusieurs significations. Selon qu'il est utilisé, on peut parler de commande de sortie, propriété d'affichage ou commande de désactivation ou d'activation. C'est une notion simple mais très souvent utilisée dans la programmation Batch. Lorsque vous créez un fichier Batch, vous entrez des commandes MS-DOS à la suite. Lorsque vous exécutez le batch, il apparaît à l'écran sous une forme un peu spéciale : il est affiché d'abord la commande comme si vous l'aviez tapée vous même sous DOS, puis son résultat. Par exemple, si vous entrez un batch simpliste contenant l'unique commande « DIR c:\*.BAT«, et que vous l'exécutez, il apparaît à l'écran un résultat du type: En haut de l'écran apparaît la commande, comme si vous l'aviez vous même tapée (DIR c:\*.BAT), puis son résultat en bas (le catalogage des fichiers Batch à la racine du disque C:\ - celui-ci étant le mien, vous n'aurez pas le même résultat que cette capture d'écran !) Maintenant imaginez que vous souhaitez simplement afficher le résultat de la commande. Il va donc falloir trouver un moyen de masquer la ligne affichant la commande avant son exécution. Pour arriver à cela, vous pouvez utiliser la commande echo off qui désactive l'écho. C'est en effet par « echo « que la fonction d'affichage avant exécution est appelée. Si vous réécrivez votre batch en lui ajoutant à son début « echo off «, cela donne : Echo off Dir c:\*.bat Et si vous l'exécutez, vous aurez un résultat du style : Seul le résultat de la commande « dir C:\*.BAT « a été affiché a l'écran. Dans votre Batch, l'écho est désactivé lorsque COMMAND.COM rencontre echo off. Ce dernier n'est pas réactivé tant que la commande inverse : echo on, n'est pas rencontrée. Pourquoi, puisque l'écho est désactivé via la commande « echo off «, cette dernière est-elle justement affichée en haut de l'écran ? Et bien tout simplement car MS-DOS affiche d'abord, et exécute ensuite. Rencontrant « echo off «, il l'affiche, puis désactive après l'écho. Nous verrons ultérieurement comment contourner cette fonction. Un autre moyen pour désactiver l'écho est de faire précéder la ligne dont seul le résultat doit être affiché du signe « @ « . Ainsi, vous pourriez transformer le batch Echo off Dir c:\*.BAT ...en ... @dir *.BAT Bien sûr, si notre batch comportait plusieurs lignes, il faudrait rajouter autant de « @ « devant chaque ligne qu'il aurait de lignes ou l'on veut désactiver l'écho. Autant, dans ce cas-là, utiliser une seule fois en début de Batch la commande « echo off «. Cette notion d'écho local doit être saisie, car la majorité des programmeurs Batchs préfèrent le désactiver par économie de place et souci de compréhension (cela évite que beaucoup trop de lignes incompréhensibles pour le néophyte soient affichées à l'écran) : vous rencontrerez donc souvent les commandes précédemment citées. Un dernier point sur l'écho : la commande « @echo off «. Il s'agit d 'une combinaison du signe « @ « et de « echo off «. Quel est son intérêt ? Et bien cela évite d'afficher « echo off « en début de batch comme il apparaît dans la dernière capture d'écran. La désactivation de l'écho est elle même masquée via « @ «. Vous rencontrerez donc très souvent cette combinaison. Vous pouvez réactiver l'écho à tout moment dans le Batch en insérant la commande inverse « echo on «. Commenter son code Comme dans tout langage de programmation, il est essentiel de commenter son code : o Cela accroît la clarté du code et le rend compréhensible par n'importe quel collaborateur, o Cela vous permet vous-même de vous repérer dans votre code si celui-ci est eu peu complexe, o Cela facilite votre relecture si par exemple vous n'avez pas travaillé sur un code depuis longtemps. Pour introduire un commentaire, utilisez l'instruction REM, puis entrez une ligne de texte, par exemple : REM Catalogage de C:\TEXTES DIR C:\TEXTES La ligne précédée de REM ne sera pas exécutée, mais tout de même affichée à l'écran si l'écho est activé. Dans tous les cas, la présence de commentaires ne gène en aucun cas l'exécution de votre code ; cela alourdit néanmoins légèrement votre fichier. ( Afficher du texte à l'écran Il peut être utile, dans certains cas, d'afficher un texte à l'écran, par exemple pour informer l'utilisateur de ce que « fait « le Batch. Vous utiliserez la commande echo . Encore elle ! Ici, son usage est différent. Si cette instruction n'est pas suivie de « off « ou de « on «, elle permet d'afficher un texte à l'écran. En réalité, ECHO est utilisé pour faire sortir tous types de données : par défaut le texte est envoyé à l'écran, mais vous pouvez l'envoyer sur l'imprimante, dans un fichier etc... Pour l'instant, considérons simplement que ECHO permet d'afficher un texte. Si vous souhaitez par exemple afficher « Bonjour « à l'écran, rien de plus simple puisqu'il vous suffit d'entrer : Echo Bonjour Remarquez l'absence de guillemets, par rapport à d'autres de langages de programmation exigeant que les variables littérales soient distinguées par ces derniers. Si l'écho local est activé, le texte sera affiché deux fois : une fois précédé de la commande d'affichage « echo «, lorsque MS-DOS affichera la ligne, une fois sans « echo «, lorsque MS-DOS exécutera la ligne. Une bonne raison de désactiver l'écho local par un simple « @echo off « en début de batch ! Voici un petit batch qui mêle commentaires, messages à l'écran et commandes DOS : @echo off REM Désactive l'écho 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 découvrirez un 3è aspect de echo : s'il n'est suivi de rien, MS-DOS affiche l'état de ECHO : ON s'il est activé, OFF s'il est désactivé. Par conséquent, il existe une « combine « pour afficher une ligne vide : il faut entrer « echo. « 3 Exemple : @echo off echo Tentative infructueuse pour afficher une ligne vide REM MS-DOS va afficher l'état de ECHO car on a oublié le « . « après « echo « : Echo Echo Affiche maintenant une ligne vide : Echo. Echo Termine. ... qui donne : Résumé : Vous avez découvert 3 aspects de ECHO : o Pour afficher du texte, on utilise « ECHO « suivi du texte à afficher, o Pour activer ou désactiver l'écho local, on utilise « ECHO ON « ou « ECHO OFF « o Si l'on veut afficher l'état de l'écho (actif / non actif), on utilise « ECHO « sans autre paramètre. Sous MS-DOS ou sous Windows, l'écho est activé ou désactivé uniquement pour le batch en cours d'exécution. Cette propriété « locale « est propre à chaque batch. L'écho étant par défaut activé, si vous souhaitez le désactiver pour tous vos batchs, il faudra entrer dans chacun d'eux « echo off « ou « @echo off « Les caractères spéciaux S'il y a bien un point important sur lequel il faut être vigilant, c'est bien sur celui des caractères spéciaux. Ceux-ci désignent notamment tous les caractères accentués de notre langue ainsi que les signes « spéciaux « %,<,>, , car ils correspondent à des sigles bien précis qui pourraient entraîner de multiples erreurs s'ils étaient insérés sans raison particulière dans un batch 4 Pour le cas des accents, il s'agit simplement d'un problème de jeu de caractères : 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 carrément de s'en passer. Pour les caractères « > «, « < «, « «, « % « , « & « , ils correspondent à des éléments du langage qui ne doivent pas être utilisés sans raison. Si vous avez absolument besoin de les utiliser, faites les toujours précéder du caractère d'échappement « ^ «, qui demandera à COMMAND.COM de ne pas les interpréter comme commandes mais juste de les afficher. Etant donner l'alourdissement conséquent de votre code dû à l'insertion systématique de ce caractère, là aussi, le plus simple et de s'en passer. Effacer l'écran Pour effacer l'écran (du moins le texte de la console DOS si vous travaillez sous Windows). Il existe une commande bien connue par les habitués du Basic : CLS, pour Clear The Screen - effacer l'écran. Imaginez une commande produisant des résultats textuels importants : pour ne pas « noyer « l'utilisateur sous un flot de caractères quelconques, faites suivre l'instruction incriminée de CLS. Le texte sera immédiatement effacé, le prompt DOS revenant au coin haut gauche de l'écran. Si vous travaillez sous DOS, il peut être utile de commencer tous vos batchs par CLS pour effacer l'écran sans doute déjà occupé par de nombreuses lignes de commandes. Sous Windows, si un batch se termine par CLS, Windows fermera automatiquement la fenêtre (par défaut sous les versions NT et XP de ce système). Cela est logique : pourquoi continuer d'afficher à l'écran une ligne vide, « nettoyée « par CLS, donc exempt d'informations pour l'utilisateur ? Faites une pause ! À la différence de CLS, instruction utilisée pour nettoyer l'écran des informations devenues inutiles, il existe une commande permettant de laisser des données à l'écran tant que l'utilisateur ne presse pas une touche. L'exécution est ainsi interrompue, laissant le temps à l'utilisateur de visualiser le résultat d'une commande, un texte d'information, un message d'avertissement, etc. Il suffit pour cela d'entrer l'instruction pause dans votre Batch. Lorsque l'interpréteur rencontre l'instruction « pause «, il apparaît à l'écran : Si vous souhaitez simplement attendre l'appui d'une touche sans afficher le message classique généré par MS-DOS, il suffit d'entrer : Pause>nul Le rôle de « >nul « sera abordé ultérieurement. Comparez-le simplement à votre stade à un « trou noir « supprimant tous les messages normalement émis par la commande à sa gauche. Alors qu'un CLS en fin de fichier Batch force Windows à fermer la console DOS, un pause en fin de Batch fait tout le contraire : il empêche la fermeture de la fenêtre tant qu'une touche n'est pas pressée. Il peut donc être utile de terminer vos batchs par cette instruction si vous possédez des OS comme Windows XP qui ferment automatiquement les batchs une fois exécutés. Pour sortir d'un Batch en pause (ou en exécution), pressez la combinaison de touche CTRL+C (Break) Avec le contenu de ce chapitre, vous pouvez rédiger de petits batchs utilisant les notions suivantes : o Contrôle de l'écho local par « @echo off « ou « echo on «, o Effacement de l'écran par CLS, o Attente de l'appui sur une touche avec pause, o Textes divers en utilisant echo . ... tout cela, bien sûr, abondamment commenté par des « REM « ! NOTE: * : MS-DOS n'est pas sensible à la différence entre les majuscules et les minuscules pour les commandes, que vous écriviez echo ou Echo, ou bien encore ECHO ou EcHo, le résultat sera le même. 6 3° Variables et paramètres ) Comme dans tous langage de programmation, il existe un moyen de stocker des informations dans un emplacement de la mémoire de votre ordinateur. A cet emplacement est associé un nom que vous définissez, afin de manipuler facilement ces données. Généralités Vous rencontrerez des variables sous plusieurs formes : o Lors de la lecture : c'est-à-dire lorsque vous examinerez et utiliserez le contenu d'une variable, o Lors de l'écriture : c'est-à-dire lorsque vous modifierez le contenu d'une variable. Dans tous les cas, la casse, c'est-à-dire la différence majuscules/minuscules n'est pas discriminatoire pour le DOS : il considère par exemple la variable Abc et aBC comme identiques. Par compte, il est sensible à la casse du contenu des variables. C'est-à-dire que lorsque vous aurez à tester le contenu d'une variable - si vous cette variable se nomme par exemple Nom et contient frederic - MS-DOS détectera une différence si le test se porte sur FREDERIC puisque le premier est en minuscules et le second en majuscules. Variables d'environnement Une « variable d'environnement « correspond au nom du seul type de variable que l'on peut utiliser pour stocker des données. Elle représente 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 d'environnement en 2 catégories : 5 5 Les variables d'environnement « persistantes « qui sont définies dans Windows (via Autoexec.bat ou le panneau de configuration) qui sont accessibles à tous les processus, Les variables d'environnement « locales « que vous définissent dans vos Batchs : la variable sera uniquement accessible au processus qui l'aura définie ainsi qu'à ses « enfants «, c'est-à-dire les processus qu'il créera éventuellement. A chaque fois qu'un nouveau processus est crée (par exemple quand votre batch en appelle un autre), celui-ci hérite des variables du processus créateur. Si vous souhaitez modifier les variables héritées du processus créateur, sachez que celles-ci ne seront pas répercutés à celui-ci : les modifications seront uniquement locales à votre processus. 7 Pour afficher les variables d'environnement persistantes (c'est-à-dire, on le rappelle, celles qui sont définies « avec Windows « et publiques à tous les processus), tapez simplement dans l'invite de commande la commande set ce qui donne par exemple : Nous voyons donc que 8 variables d'environnement sont définies sur cet ordinateur : TMP, TEMP, PROMPT, WINBOOTDIR, COMSPEC, PATH, WINDIR; et BLASTER. Sur ces 8 variables, 7 sont définis par et pour WINDOWS : TMP (Répertoire temporaire), TEMP (Répertoire Temporaire), PROMPT (Invite du DOS), WINBOOTDIR (Dossier de démarrage de Windows), COMSPEC (Adresse de l'interpréteur de commandes), PATH et WINDIR (Dossier de Windows). Introduction a la création de variables Nous allons créer des variables, auxquelles nous assignerons des valeurs. A la création de celles-ci, il faudra toujours spécifier une valeur initiale. Ainsi, à la variable « Dossier4 « peut être affecté la chaîne de caractère : « C:\WINDOWS\COMMAND\EDB\MAKECAB «. Utilisez la commande SET, qui requiert la syntaxe suivante : Set NomDeVariable=Valeur Lorsque l'interpréteur rencontre SET, il analyse ensuite le nom de la variable à sa droite, puis les données à droite du signe égal. Il associe ensuite un espace de votre mémoire vive à la variable crée, remplissant cette mémoire réservée par les données trouvées. 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 vérifier que celle-ci a bien été ajoutée avec les autres. Encore une fois, comme votre variable n'a pas été définie comme variable persistante, à la fermeture de la console celle-ci sera effacée de la mémoire. Erreur d'espace d'environnement insuffisant Il arrive parfois que Windows 9x ne puisse enregistrer la variable et affiche le message « espace d'environnement insuffisant «. Olaf COPO, sur microsoft.public.fr.windows98, répond à cela : « L'espace d'environnement est une notion héritée du DOS, et il est probable que votre solution réside dans le bon vieux CONFIG.SYS qui, n'en déplaise à certains, est encore important sous Windows, de même qu'AUTOEXEC.BAT. Cet espace mémoire comprend les variables PATH, COMSPEC et celles définies é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 déduire les variables d'environnement déjà définies sur votre machine. Ce qui fait qu'on ne va pas très loin... « Pour masquer ce message et résoudre les problèmes il faut donc augmenter la taille de la mémoire d'environnement : - Ouvrez CONFIG.SYS avec Notepad (fichier généralement placé dans "C:\config.sys") - Insérez 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 modifiée selon vos besoins. /e: définis la taille de l'environnement (ici 1024 octets) /p exécute AUTOEXEC.BAT Vous pouvez porter la taille de l'environnement à 2048 si des problèmes surviennent toujours. Normalement, ce problème ne devrait pas survenir sous Windows NT. Lire et utiliser les variables Pour lire le contenu d'une variable, on l'encadre de deux « % «. Ces deux signes indiquent à l'interpréteur qu'il doit remplacer le nom de la variable par son contenu. Si la variable n'existe pas, aucune erreur n'est a...