Les fichiers batch permettent d'exécuter une série d'instructions passées en ligne de commandes. Cela fonctionne sur les invites de commandes proposée par Windows (MS-DOS) ou Linux (Terminaux).

Les fameux écrans noirs invitent l'utilisateur à saisir des instructions afin d'effectuer des tâches précises.

Affichage de la date courante
c:\>date /T [Validez]

Affichage de l'heure courante
c:\>time /T [Validez]

Changement de répertoire
c:\>cd .\travail\trimestre2\ [Validez]

Edition d'un fichier
c:\travail\trimestre2\>edit cours.txt [Validez]

Parfois, il peut être utile de lancer plusieurs instructions les unes à la suite des autres afin d'atteindre un but précis.

c:\>d: [Validez]
d:\>cd travail [Validez]
d:\travail\>cd cours [Validez]
d:\travail\cours\>cd temporaire [Validez]
d:\travail\cours\temporaire\>del *.* [Validez]
d:\travail\cours\temporaire\>cd .. [Validez]
d:\travail\cours\>rd temporaire [Validez]

Dans ce cas, plutôt que de taper cette suite de commandes, surtout si elle est destinée à être répétée, il sera préférable d'utiliser un fichier batch.

rem Fichier : effacement.bat
rem Empeche l'inscription des lignes de commandes !
@echo off
rem Efface la console
cls
rem Affiche du texte a l'ecran
echo Effacement du repertoire temporaire et de ses fichiers
rem Marque une pause
pause
d:
cd travail
cd cours
cd temporaire
del *.*
cd ..
rd temporaire
echo Les fichiers temporaires et le répertoire ont bien ete effaces !

L'enregistrement de ce genre de texte dans un fichier portant l'extension .bat pour Windows et .sh pour Linux, puis l'appel de ce fichier à partir de la console, permettront de lancer automatiquement le traitement attendu.

c:\>effacement.bat [Validez]

Une particularité importante des fichiers batch est qu'ils peuvent recevoir de un à neuf arguments.

rem Fichier : bienvenue.bat
@echo off
echo Bienvenue %1 !

c:\>bienvenue Frederic [Validez]
Bienvenue Frederic !

En fait, il existe dix arguments possible, il s'agît du nom du fichier batch lui même, portant la référence %0.

rem Fichier argument.bat
@echo off
cls
echo %0

C:\argument [Validez]
c:\argument

De cette manière, l'utilisateur du fichier batch pourra saisir des informations particulières au traitement attendu.

rem Fichier : suppression.bat
@echo off
cls
%1:

cd %2
del *.*
echo Effacement des fichiers !
cd \

rem Si le troisieme argument est egal a n alors allez a fin
if "%3"=="n" goto fin
rd %2
echo Effacement du repertoire %2 !

rem Etiquette de fin
:fin

C:\>suppression d repertoire o [Validez]
D:\dd\*.*, Êtes-vous sûr (O/N) ? o
Effacement des fichiers !
Effacement du repertoire dd !
D:\>

Dans cet exemple, une instruction conditionnelle if est utilisé afin de tester un argument et en fonction de ce dernier un certain traitement sera ou ne sera pas appliqué. En l'occurrence, le troisième argument détermine si le répertoire cible doit être effacé après les fichiers.

Il est possible d'utiliser plus de neuf arguments à l'aide d'une commande de décalage : shift.

rem Fichier : arguments.bat
@echo off
:continue
if "%1"=="" goto fin
echo %1
shift
goto continue
:fin
echo Lecture des arguments terminee !

C:\>arguments 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [Validez]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Lecture des arguments terminee !

Les fichiers batch peuvent également utiliser des variables, initialisées à l'aide de la commande set.

rem Fichier variable.bat
@echo off
set repertoire=%1
set fichier=%2

if exist %repertoire% goto suite
echo Le repertoire %repertoire% est introuvable !
goto fin

:suite
echo Le repertoire %repertoire% a ete trouve !
cd %repertoire%
if exist %fichier% goto suivant
echo Le fichier %fichier% est introuvable !
goto fin


:suivant
echo Le fichier %fichier% a ete trouve !
type %fichier%
echo .../...
echo Traitement termine !

:fin

C:\>variable repertoire fichier.txt [Validez]
Le repertoire repertoire a ete trouve !
Le fichier fichier.txt a ete trouve !
Le contenu du fichier .../...
Traitement termine !
E:\repertoire\>

Les variables ne peuvent délivrer leur contenu qu'à condition d'encadrer leur identificateur avec des signes de pourcentage %, sinon sera utilisé dans une expression, l'identificateur de la variable, et non sa valeur.

Une autre commande intéressante n'existe malheureusement plus dans les versions récentes de Windows. Il s'agît de la commande choice procurant une structure de choix particulièrement utile et puissante.

rem Fichier : choix.bat
:menu
echo A - Compilez un fichier source
echo B - Exécutez un fichier classe
echo C - Consultez un fichier source
echo D - Quittez le menu
echo E - Fermez la console

choice /c:abcde
if "%errorlevel%"=="A" goto compil
if "%errorlevel%"=="B" goto exec
if "%errorlevel%"=="C" goto edite
if "%errorlevel%"=="D" goto fin
if "%errorlevel%"=="D" goto quit

:compil
javac %1.java
goto menu

:exec
java %1
goto menu

:edite
edit %1.java
goto menu

:quit
exit

:fin

C:\>choix fichier

Les fichiers batch proposent donc une solution simple pour automatiser des tâches répétitives et plus ou moins complexes. Par exemple dans le cas des compilations Java, il peut être souhaitable d'initialiser certaines variables d'environnement nécessaires.

rem Fichier : compilexec.bat
@echo off
set path=c:\j2sdk\bin\;%PATH%

if not "%3"=="" goto init
set repertoire=%1
set fichier=%2
goto suite

:init
set repertoire=%2
set fichier=%3
:suite
set classpath=c:\%repertoire%\classes\
set source=c:\%1\sources\
set direction=c:\%1\classes\
javac -classpath %classpath% 
                                     -d %direction% %source%%fichier%.java
echo La compilation a ete accomplie avec succes !

java -classpath %classpath% %fichier%
echo L'execution s'est deroulee avec succes !

C:\compilexec projet repertoire fichier.java [Validez]
La compilation a ete accomplie avec succes !
...
L'execution s'est deroulee avec succes !