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 !