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