Script Batch - Fonctions

Salut à toi, aspirant(e)s programmeur(euse)s ! Aujourd'hui, nous allons plonger dans le merveilleux monde des fonctions dans les scripts Batch. En tant que votre enseignant informatique de quartier, je suis excité de vous guider dans cette aventure. Alors, prends une tasse de ta boisson favorite et c'est parti !

Batch Script - Functions

Qu'est-ce que les fonctions ?

Avant de rentrer dans les détails, comprendre ce qu'elles sont. Les fonctions sont comme de petits assistants dans ton script. Ce sont des mini-programmes dans ton programme principal qui effectuent des tâches spécifiques. Comme tu pourrais demander à un ami de t'aider avec une corvée particulière, tu peux appeler ces fonctions pour faire des jobs spécifiques dans ton script.

Définition des fonctions

Maintenant, apprenons à créer ces petits amis utiles. Dans les scripts Batch, nous définissons des fonctions en utilisant des étiquettes. Voici la structure de base :

:functionName
REM Ton code de fonction va ici
REM ...
REM ...
goto :eof

Reprenons cela :

  1. :functionName est l'étiquette qui marque le début de ta fonction.
  2. Les lignes suivant l'étiquette contiennent le code réel de ta fonction.
  3. goto :eof dit au script de sauter à la fin du fichier, mettant ainsi fin à la fonction.

Voici un exemple simple :

:sayHello
echo Hello, World!
goto :eof

Cette fonction, lorsqu'elle est appelée, affichera simplement "Hello, World!" dans la console.

Appel des fonctions

Maintenant que nous avons créé une fonction, comment l'utilisons-nous ? Nous utilisons la commande call. Voici comment :

@echo off
call :sayHello
pause

:sayHello
echo Hello, World!
goto :eof

Lorsque tu exécutes ce script, il affichera :

Hello, World!
Appuie sur une touche pour continuer . . .

La commande call dit au script d'exécuter notre fonction sayHello.

Fonctions avec des paramètres

Les fonctions deviennent encore plus puissantes lorsque nous pouvons leur passer des informations. Ces morceaux d'information sont appelés paramètres. Modifions notre fonction sayHello pour saluer une personne spécifique :

@echo off
call :sayHello John
pause

:sayHello
echo Hello, %~1!
goto :eof

Sortie :

Hello, John!
Appuie sur une touche pour continuer . . .

Dans cet exemple, %~1 représente le premier paramètre passé à la fonction. Lorsque nous appelons sayHello John, "John" devient ce premier paramètre.

Fonctions avec plusieurs paramètres

Nous pouvons passer plusieurs paramètres à une fonction. Créons une fonction qui additionne deux nombres :

@echo off
call :addNumbers 5 3
pause

:addNumbers
set /a result=%~1 + %~2
echo La somme de %~1 et %~2 est %result%
goto :eof

Sortie :

La somme de 5 et 3 est 8
Appuie sur une touche pour continuer . . .

Ici, %~1 représente le premier paramètre (5), et %~2 représente le second paramètre (3).

Retour de valeurs des fonctions

En scripting Batch, les fonctions ne retournent pas de valeurs dans le sens traditionnel. Cependant, nous pouvons utiliser des variables d'environnement pour simuler ce comportement :

@echo off
call :multiply 6 7
echo Le résultat est %result%
pause

:multiply
set /a result=%~1 * %~2
goto :eof

Sortie :

Le résultat est 42
Appuie sur une touche pour continuer . . .

Dans cet exemple, la fonction multiply définit une variable result, que nous pouvons utiliser dans notre script principal.

Variables locales dans les fonctions

Lorsque tu travailles avec des fonctions, il est souvent une bonne idée d'utiliser des variables locales pour éviter d'interférer avec les variables du script principal. Nous pouvons faire cela en utilisant les commandes setlocal et endlocal :

@echo off
set globalVar=Je suis global
call :localVarDemo
echo Après l'appel de la fonction : %globalVar%
pause

:localVarDemo
setlocal
set globalVar=Je suis local
echo À l'intérieur de la fonction : %globalVar%
endlocal
goto :eof

Sortie :

À l'intérieur de la fonction : Je suis local
Après l'appel de la fonction : Je suis global
Appuie sur une touche pour continuer . . .

La commande setlocal crée un nouvel environnement pour la fonction, et endlocal le supprime lorsque la fonction se termine, préservant la valeur originale de globalVar.

Bibliothèques de fonctions

À mesure que tes scripts deviennent plus complexes, tu pourrais te trouver à utiliser les mêmes fonctions dans plusieurs scripts. Au lieu de copier et coller ces fonctions dans chaque script, tu peux créer une bibliothèque de fonctions :

  1. Crée un nouveau fichier, appelons-le myFunctions.bat
  2. Met dans ce fichier tes fonctions couramment utilisées
  3. Dans ton script principal, utilise la commande call pour exécuter ce fichier avant d'utiliser ses fonctions

myFunctions.bat :

:sayHello
echo Hello, %~1!
goto :eof

:addNumbers
set /a result=%~1 + %~2
goto :eof

mainScript.bat :

@echo off
call myFunctions.bat

call :sayHello World
call :addNumbers 10 20
echo La somme est %result%
pause

Cette approche aide à maintenir ton code organisé et réutilisable.

Méthodes courantes pour les fonctions

Voici un tableau des méthodes courantes liées aux fonctions dans les scripts Batch :

Méthode Description
call Appelle une fonction
goto :eof Met fin à une fonction
%~1, %~2, etc. Accède aux paramètres de la fonction
setlocal Crée un environnement local pour les variables
endlocal Termine l'environnement local

souviens-toi, la pratique rend parfait ! N'aie pas peur d'expérimenter avec ces concepts. Crée tes propres fonctions, joue avec les paramètres, et vois ce que tu peux construire. Avant de t'en rendre compte, tu écriras des scripts Batch complexes avec facilité !

Bonne programmation, futurs programmeurs !

Credits: Image by storyset