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