LES FICHIERS "BAT" par MAD666 Suite à de nombreuses demandes,voici un petit court sur la "programmation" des fichiers BAT (Batch file !). Un fichier BAT n'est en fait qu'une succession d'ordre du DOS qui permet d'éviter l'execution de taches répétitives ou compliquées en n'executant qu'un seul fichier.Cela permet également de lancer un fichier qui necessite plusieurs paramètres en ligne de commande et ce,le plus simplement du monde. Pour ce faire,nous disposons de plusieures commandes DOS spécifiques. De plus,la possibilitée d'inclure des variables indépendement du fichier BAT, permet,en outre,de lancer un fichier BAT,suivi de paramètres;ce qui à pour effet d'etre trés util dans certains cas (cf:les variables). CHOICE: L'une des instructions la plus sollicitée dans un BAT dit complexe,est la commande CHOICE.(je ne parlerais pas des BAT que je surnome "simple" et qui ne font que lancer un programme suivit de paramètres definis;c'est sans interˆts ;-)) Cette commande CHOICE est en fait un input clavier.lors de l'execution de celle-ci,le programme attend une saisie au clavier par l'utilisateur. Cette saisie est le plus souvent un chiffre correspondant à un choix numéroté dans un menu.Il suffit a l'utilisateur de taper ce chiffre,suivit de la touche de validation (Entrée).Lors de cette validation,et donc,en fonction du chiffre entré,le BAT ce branche alors vers un "sous-programme" interne et l'execution continue.Lors du choix,une valeur est attribuée à la variable ERRORLEVEL. c'est donc en fonction du contenu de cette variable que vous choisirez la suite de l'execution.Concrétisons celà par un exemple: @ECHO OFF CLS ECHO 1:utiliser le driver XB52 ECHO 2:utiliser le driver RX27 ECHO 3:ne pas utiliser de driver ECHO. CHOICE /C:123 Quel est ton choix? /T:3,10 IF ERRORLEVEL 3 GOTO DRIVERZERO IF ERRORLEVEL 2 GOTO DRIVER RX27 IF ERRORLEVEL 1 GOTO DRIVER XB52 :DRIVERZERO GOTO SUITEDRIVER :DRIVER RX27 rx27.com /ver GOTO SUITEDRIVER :DRIVER XB52 xb52.exe /b /c :SUITEDRIVER [continuité du programme...] Voilà ! Alors,je vais donner quelques explications ligne par ligne: -@ECHO OFF sert uniquement a n'avoir aucune sortie ecran,excepté le texte suivant les paramètres ECHO;Si vous hométez cette ligne,ou si vous ne la placer pas comme première du programme,tout ce qui precede @ECHO OFF sera affiché a l'ecran ! donc,cette commande est inévitable ! -CLS ne sert simplement qu'à effacer l'ecran ! -les trois lignes suivantes (ECHO 1:utiliser... à ECHO 3:ne pas...) servent à afficher les choix possibles a l'ecran.vous aurez donc à l'ecran quelque chose comme: 1:driver XB52 2:driver RX27 3:ne pas utiliser de driver -ECHO. sert a passer une ligne. Si vous tapez ECHO suivi de rien,il ne s' afficheras rien ! le seul moyen pour passer une ligne et d'y rajouter un point "." directement derrière ECHO. Ne tapez pas "ECHO ." avec un espace entre les deux,car,cela n'affichera qu'un point ! -CHOICE /C:123 Quel est ton choix? /T:3,10 affichera à la suite la phrase: Quel est ton choix?_ le _ etant le curseur clignotant du DOS ! Alors,on va expliquer un peu cette ligne paraissant si complexe ! Le /C:123 permet à la commande CHOICE de savoir quelles sont les touches du clavier sur lequel l'utilisateur pourras appuyer.Si il appuye sur d'autres touche que celle definies aprés /C: il sera emis un BEL 07H,c'est a dire un "bip" par le haut-parleur interne du PC. La phrase suivant le /C:123 ,qui est "Quel est ton choix?" est obtionnelle. Mais,il vaut mieux en mettre une,c'est plus explicite ! La suite,le /T:3,10 merite des explications ! le paramètre /T sert à la selection par default;Le premier paramètre "3" est le choix par default.Le second,le "10",est le nombre de secondes que le programme attendra avant de selectionner automatiquement le choix "3". Donc,concrètement,aprés 10s d'inaction de la part de l'utilisateur,le choix "3" seras automatiquement choisi,et le programme continueras avec ce choix. Il n'est malheureusement pas possible,à ma connaissance,d'afficher le temps restant avant la selection du choix automatique,comme avec MENUITEM par ex. Le paramètre /T est optionnel. -Les trois lignes suivantes "ERRORLEVEL ...." doivent obligatoirement tenir compte du fait que CHOICE ce dit que si ERRORLEVEL est egale à 2,et que si on lui demande d'abord si il est egale a 1,il repondras oui ! car dans 2,y' a un 1 ! Donc,il faut obligatoirement entrer les lignes avec les choix par ordre DECROISSANT (du plus grand au plus petit !) ;-) Ensuite,c'est simple:IF ERRORLEVEL 2 GOTO SOUSPRG signifie que si la variable ERRORLEVEL est egale a 2,alors,branches toi sur le sous-programme SOUSPRG . Un sous-programme commence toujours par deux-points ":" suivi du nom de ce sous-programme. Soyez explicite dans vos nom,vous vous y retrouverez mieux ! les lignes suivantes sont les sous-programmes eux mˆme.pas la peine de s' etendre la dessus je pense ?! Il faut tout de mˆme dire que vous DEVEZ ABSOLU -EMENT finir vos sous-programmes par un envoi a un autre sous-programme ! dans l'exemple,il s'agit de GOTO SUITEDRIVER.Si vous hometez celà,et que le choix etait le 3 (donc,le premier au niveau hierarchie des lignes!),et bien, votre programme BAT continuera a lire la suite,c'est a dire qu'il lira egale- ment les choix 2 puis 1 ! il faut donc lui dire d'aller plus loin ! Remarquez que je n'est volontairement pas mis de GOTO SUITEDRIVER lorsqu'on a choisit le choix 1 ! c'est tout simplement qu'il est inutile,car le sous- programme SUITEDRIVER ce trouve juste a la suite,donc,il le lis automatiquem- ent ! Voilà pour la commande CHOICE. LES VARIABLES: L'utilisation des variables dans les BAT est trés interressantes car elle permet vraiment d'avoir des BAT 'flexibles'. Une variable est de type: %1 l'utilisation de plusieures variables seras: %1 %2 %3 ... Lorsque vous taper un fichier BAT son le nom TRUC.BAT et que,sous DOS,vous tapiez TRUC ,votre fichier BAT s'execute ! normal me direz vous ! Mais,si vous devez entrer une donnée quelconque comme donnée qui sera utilisée par le fichier que lancera votre BAT,cela vous est impossible. Je vais prendre un exemple:votre fichier BAT doit lancer votre jeu préféré qui as besoin de plusieurs parametres,donc,astraignant a retaper a chaque fois.Voilà pourkoi vous avez fait un fichier BAT pour pouvoir le lancer automatiquement ! Vous y avez inclue des CHOICE pour pouvoir l'utiliser sous plusieurs (4) configurations differentes.Mais,de temps à autre,il vous arrive d'aller chez un copain,avec votre PC,pour pouvoir y jouer l'un contre l'autre,en cablé. Plutot que de retaper les 4 configurations differentes,avec en plus,les 3 parametres qui seront toujours les meme,ce qui vous ferait un choice a 8 possibilitées (ce qui est lourd !),vous preferez utiliser les variables ! Car,lorsque vous etes chez vous,cela vous paraitras totalement transparent. Votre jeu a donc besoin de 3 paramètres pour effectuer la connexion. le port COM utilisé,la vitesse en BAUD de transmition et le NOM que vous souhaitez utiliser dans votre jeu.Comme vous pouvez changer ces parametres d'une connexion sur l'autre,l'utilisation des variables prend toute son ampleure ! L'endroit ou vous entrerez ces variables ne seras pas une fois le fichier BAT lancé ! Il vous est imossible avec CHOICE de n'entrer plus d'un caractere a la fois ! Vous entrerez ces variables lorsque vous taperez le nom du fichier BAT sous DOS,de la facon suivante: TRUC.BAT COM BAUD NOM la valeur de COM sera enregistrée dans %1,celle de BAUD dans %2,et par conséquent,celle de NOM,dans %3. Cela ce fait automatiquement par DOS. Dans votre fichier BAT,que faut-il faire ? ET bien,il faut simplement faire comme si %1 %2 et %3 sont les parametres normaux que vous taperiez sous DOS en lançant,a la main,votre jeu. Si,vous deviez taper JEU.EXE /C:2 /B:115200 /N:KILLER pour lancer le jeu (ou /C: est le port COM choisit [là,le 2],et /B: la vitesse de transmition en bauds [ici,115200 bauds],et /N: le nom du joueur [Killer]) et bien,dans votre fichier bat,il vous faut operer de la mˆme manière;celà donnerais: JEU.EXE /C:%1 /B:%2 /N:%3 Vous avez compris qu'il suffit de remplacer par %X ce qui est remplacer par la variable,et ce,à l'endrois exact ou il ce trouve. C'est d'une simplicité enfantine non ? Vous pouvez evidement utiliser plusieurs fois la meme variable dans un mˆme fichier BAT.Par exemple,vous avez l'habitude de compresser des repertoires avec un utilitaire de compression et vous utilisez toujours les mˆmes parametres;il n'y as que le nom du repertoire et celui du nom de l'archive ainsi que le nom d'un fichier script qui change.Comme vous utilisez toujours le mˆme nom pour le repertoire,le script et le nom de l'archive,faites vous donc un fichier BAT utilisant une seule variable ! Celà donnerais: COMPRESS.EXE -V1440 -Y -X3 -Sc:\script\%1.scr %1 %1 ou -S serait suivi du path et du nom du fichier script ;comme tout vos fichiers script son suivit de .SCR,vous entrez donc %1.SCR ! Le %1 suivant est le nom de l'archive.l'autre %1 suivant est le repertoire a compressé. Ceci n'est qu'un exemple ! A vous de l'adapter en fonction de vos besoins ! Si vous programmer un fichier BAT n'utilisant que les variables,il semble utile d'y rajouter une section ERREUR.Lorsque vous lancer votre fichier BAT sans aucun paramètre,il ne se passe rien ! Comme vous n'utilisez que les variables,et qu'il n'y en as pas,vous recevrez juste un message d'erreur de la part de l'EXE qui seras lancer par votre BAT.cela n'est pas tres explicite si,par exemple,c'est le cas pour votre compresseur,qui affiche la liste de tous ces propres parametres ! d'ou viens l'erreure ? Soit,vous edité votre fichier BAT,pour vous rememorer la façon dont il marche,soit vous utilisez un sous programme d'erreures.Metons que votre fichier BAT est besoin de 3 variables pour ce lancer convenablement.Il suffit en debut du BAT,de verifier que ces deux varialbles on bien été entrer a la suite du lancement du BAT. pour ce faire,voici un exemple: @ECHO OFF CLS IF "%1"=="" GOTO ERROR IF "%2"=="" GOTO ERROR COMPRESS.EXE -V1440 -Y -X3 -Sc:\script\%1.scr %1 %2 GOTO FIN :ERROR ECHO Veuillez taper TRUC.BAT Parametre1 Parametre2 :FIN Si vous tapez TRUC.BAT sans paramètre,ou avec 1 seul parametre,l'affichage du message d'erreur se produit.Le cas contraire,si vous taper 2 parametres, ou meme si vous en tapez plus (!),le programme s'execute. Vous pouvez,si le coeur vous en dit,rajouter: IF NOT "%3"=="" GOTO ERROR2 :ERROR2 ECHO Pas la peine d'entrer plus de 2 parametres ! GOTO FIN ... le NOT indique que si l'inverse est vrais,il faut effectuer ERROR2. Donc,si vous entrer 3 paramètres ou plus,y'a erreure ! :FINI ! Voilà que ce termine cet article sur les fichiers BAT. J'espère que vous y aurez appris quelque chose d'interressant pour vous et que cela vous permettras de programmer de tels fichiers qui vous facilite la vie,et surtout,vous fait gagner ce temps si precieux qu'est celui qui passe toujours trop vite lorsque l'on est sur son PC ! Personnellement,je doit avoir une bonne dizaine de fichier BAT que j'utilise relativement souvent.N'oubliez pas de les placer dans un repertoire figurant dans votre PATH (voyez votre AUTOEXEC.BAT !) Moi,je les ait mis dans C:\DOS Bonne programmation ... MAD666