Les Batchs
Qu'est ce qu'un batch ?
Un batch est un fichier texte regroupant une s�rie de commandes (Programmes ou commandes Dos). C'est un fichier �x�cutable dont l'extention est .bat.
L'int�ret d'un fichier batch r�side dans le fait qu'il :
automatise certaines t�ches r�p�titives
permet de substituer une commande longue � taper par un petit programme
Comment cr�er un Batch?
Pour cr�er un batch, le seul outil dont on ait besoin est un �diteur ( L'�diteur fourni avec Ms-Dos convient parfaitement).
Notre premier Batch:
Nous allons cr�er un petit batch nous permettant de formater une disquette dans le lecteur A:
Lancer l'�diteur en tapant la commande EDIT
Taper Format A:
Sauvegarder en s�lectionnant le menu Fichier,puis Enregistrer sous
Donner un nom au Batch Exemple: FA.BAT
Quitter l'�diteur en s�lectionnant Fichier puis Quitter
Dor�navant pour formater une disquette, nous n'aurons plus qu'a taper FA puis appuyer sur entr�e, au lieu de Format A:
Les commandes BATCH :
Elles sont au nombre de 8 :
CALL : appelle et ex�cute un autre fichier BATCH
ECHO : active ou d�sactive l'affiche des commandes ou affiche un message
FOR : Applique une commande � plusieurs fichiers
GOTO : continue l'ex�cution du fichier BATCH � un endroit donn�.
IF : n'ex�cute une commande que si une condition est remplie
PAUSE : suspend provisoirement l'ex�cution du BATCH et affiche un message
REM : permet de commenter une ligne
SHIFT : permet de d'utiliser plus de 10 param�tres rempla�ables
Il existe aussi plusieurs op�rateurs.
REM
Pour documenter un fichier ou une ligne d'un fichier . Elle permet de rendre "lisible" un BATCH
REM ceci est une ligne de commentaires et ne sera pas affich�e � l'�cran si la commande ECHO est d�sactiv�e. ( ECHO OFF) ou si un @ (esperlu�te) est mis devant la commande REM
exemple :
@REM cette ligne ne sera pas affich�e
Elle a un inconv�nient, plus il y a de REM dans un BATCH, plus son ex�cution est ralentie.
Deux solutions existent :
Mettre un goto debut en t�te du batch, le label debut va �viter les REM et lanc� l'ex�cution du programme :
exemple :
@echo off
GOTO DEBUT
commentaires
:DEBUT
commandes
Mettre deux points ( : ) devant les commentaires � la place de REM, ce qui transforme cette ligne en un faux LABEL.
exemple :
: cette ligne est un commentaire
( ne pas oublier l'espace entre les deux points et la premi�re lettre, par mesure de s�curit�, au cas ou un autre label commencerait par la m�me lettre)
La commande REM peut �galement servir � cr�er un fichier de taille nulle :
REM > fichier
ce fichier aura z�ro octet. L'appel a ce fichier pour quitter le BATCH ( au lieu de GOTO END) aura pour effet une sortie imm�diate.
ECHO
cette commande a deux utilisations :
Elle sert � activer ou d�sactiver l'affichage.
Elle sert �galement � afficher les messages de l'utilisateur.
- ECHO employ� seul affiche l'�tat courant de ECHO
- ECHO ON active l'affichage des commandes
- ECHO OFF d�sactive l'affichage des commandes
- ECHO MESSAGE affiche un message � l'�cran, m�me si ECHO est sur OFF.
ECHO. = suivi d'un point ECHO permet de sauter une ligne � l'affichage.
ECHO. > PRN = saute une ligne � l'impression.
ECHO. >> fichier = Rajoute une ligne blanche dans un fichier.
ECHO suivi de CTRL-G (ASCII 7 ) = produit un son
ECHO suivi de CTRL-L = �jecte une page de l'imprimante
Cr�er un fichier : ECHO O > oui.txt
del *.bak < oui.txt
del oui.txt
ou ECHO O | del *.bak
le signe @ ( a commercial ou esperlu�te) permet de faire en sorte que la ligne qui suit ne soit pas affich�e ( il doit s'agit d'une commande et non de lignes de commentaires)
exemple : @echo off
COMPARAISON DE CHAINES :
Si un param�tre est n�cessaire sur la ligne de commande il faut tester son existence :
if %1 !==! goto aide
Pourquoi des !
Parce que le DOS n'accepte pas de tester des chaines vides. Il suffit alors de mettre les m�mes caract�res aux 2 chaines compar�es ( = ou + ou ' ou ! )
CALL
Lance un autre batch et revient ensuite ex�cuter la commande suivante.
exemple : CALL fichier.bat
FIND
Permet de trouver dans quel fichier se touve le texte que l'on recherche.
Options :
/V : demande l'affichage de toutes les lignes ne contenant pas le texte.
/C : demande le nombre de lignes contenant la chaine de non leur affichage.
/N : permet de faire pr�c�der les lignes d'un num�ro indiquant leur place dans le fichier.
/I : ne fait aucune distinction entre minuscules et majuscules
Exemple : afficher les fichiers, tri�s, non les r�pertoires :
DIR | FIND /V "REP" | SORT | MORE
SORT
Trie sur une colonne d�termin�e :
SORT /R /+N < fichier
trie un fichier d'une grandeur maxi de 64 KO
le trie s'effectue normalement sur la premi�re colonne mais peut �tre modifi� par /+N o� N est un chiffre repr�sentant une colonne.
le tri peut �tre invers� grace � l'option /R
le tri est alpha, chiffres avant les lettres.
SET
Affiche et modifie les variables d'environnement :
les variables d'environnement sont en g�n�ral plac�es dans AUTOEXEC.BAT
GOTO
permet d'interrompre l'ex�cution d'un batch pour la poursuivre � un autre endroit marqu� par un label.
LABEL :
permet un branchement lanc� par un GOTO.
ne doit pas comporter d'espaces et doit �tre coll� aux deux points (:) commen�ant la ligne.
sa longueur n'est pas limit�e mais seuls les 8 premiers caract�res seront reconnus.
IF
Si condition vraie, lacommande suivante est ex�cut�e, sinon on passe � la ligne suivante .
IF NOT : si condition pas remplie
IF EXIST : test d'existence d'un fichier
IF NOT EXIST : test de non existence
IF ne pr�voie pas l'existence d'un r�pertoire.
solution :
IF EXIST %1 goto fichier
IF EXIST %1\NUL goto r�pertoire
IF %1 !==\! goto r�pertoire
echo %1 n'existe pas
:fichier
echo %1 est un fichier
goto end
:r�pertoire
echo %1 est un r�pertoire
goto end
FOR, IN, DO
FOR variable IN (liste) DO commande
Permet d'appliqer la commande � tous les �l�ments plac�s dans la liste.
exemple : copier les fichiers bak et txt vers le r�pertoire c:\secours :
FOR %%A IN (*.Bak *.TXT) DO COPY %%A c:\secours /V
exemple : r�cup�rer l'aide du DOS dans un fichier :
FOR %%A IN (c:\dos\*.exe c:\DOS\*.com) DO %%A /? >> aide.txt
( si la commande est lanc�e directement de la ligne de commande on n'utilise qu'un seul % davant le A. Si la commande est int�gr�e dans un batch, il en faut 2).
LES ERREURS
certains programmes g�n�rent en fin d'�x�cution un nombre indiquant s'ils ont rencontr� des probl�mes ou non.
les niveaux d'erreur, cod�s sur 1 octet vont de 0 � 255
on les nomme ERRORLEVEL
une ex�cution sans probl�me g�n�re un code erreur de 0
IMPORTANT : ERRORLEVEL ne teste pas si le niveau d'erreur est �gal � la valeur indiqu�e, mais s'il lui est sup�rieur ou �gal. C'est pourquoi il faut toujours commencer par tester le niveau sup�rieur.
SHIFT
Utilis� pour les arguments ou param�tres de lancement.
On affecte %0 au 1� param�tre rencontr� ( en l'occurence le nom du Bach lui m�me), %1 au 2�me param�tre, %2 au troisieme parametre., ceci jusqu'� 9.
le DOS ne pouvant utiliser que 10 param�tres rempla�ables. S'il y a plus de 9 param�tres les autres seront omis.
SHIFT sert � d�passer cette limite. Il d�cale tous les param�tres d'un rang vers le bas. Apr�s un premier appel � SHIFT, % 1 devient %0 et %10 devient %9
Un deuxieme appel � SHIFT permet d'utiliser %11
PAUSE
Interrompt l'ex�cution d'un batch et affiche un message : appuyez sur une touche pour continuer...
PAUSE message : affiche un message puis "appuyez sur une....."
pour supprimer ce message : PAUSE > NUL
LE PATH
La taille du PATH est limit�e � 127 caract�res ( en fait 122, car PATH= en occupe d�j� 5). Int�gr� � l'autoexec.bat il permet d'�viter d'avoir � taper en ligen de commande l'int�gralit� du chemin des applications.
La possibilit� d'ajouter des r�pertoires au chemin n'existe pas en th�orie. Il faut reprendre en compe l'int�grali�t du Path. Il existe en fait une solution....
La modification provisoire du Path peut se faire comme suit :
On sauvegarde l'ancien path : SET OLDPATH = %PATH%
Puis en fin de batch on r�tablit l'ancien Path : SET PATH = %OLDPATH
On supprime l'ancien PATH : SET OLDPATH=
On peut sauvegarder provisoirement l'ensemble des variables d'environnement :
SET > VARIABL.BAT
Ainsi en tapant VARIABL on r�cup�re les anciennes valeurs de PROMPT, PATH et COMSPEC.
On peut tr�s bien ne r�cup�rer que le PATH :
PATH > CHEMIN.BAT
Pour ajouter un r�pertoire au Path en cours :
PATH = %PATH% ; %1