Routines (batch)

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Sujet Sous-routines et fonctions batch
Appel call:nom_routine
Retour goto:eof
Voir aussi Batch · Menu (batch)

En batch, une sous-routine (ou fonction) est une section repérée par une étiquette :nom, appelée avec call:nom et terminée par goto:eof. Cette page illustre les principaux modes de passage d'arguments.

Sous-routine simple

@echo off

echo appel de la fonction
call:sous_routine
echo apres appel

echo.&pause&goto:eof

::--------------------------------------------------------
:: section fonctions
::--------------------------------------------------------

:sous_routine
echo.  execution de la subroutine
goto:eof

Passage d'argument par valeur

Les arguments reçus sont accessibles via %~1 %~2 %~3 ....

@echo off

echo appel de la fonction
call:fonction argument1 argument2
echo apres appel

echo.&pause&goto:eof

::--------------------------------------------------------
:: Fonction avec passage par valeur, arguments %~1 %~2 ...
::--------------------------------------------------------

:fonction
echo.  execution de la subroutine
echo.  arguments : %~1 %~2
goto:eof

Retour d'un résultat par variable globale

Une variable définie dans la routine reste visible après le retour (hors setlocal).

@echo off

echo avant appel de la fonction var = %var%
call:fonction
echo apres appel de la fonction var = %var%

echo.&pause&goto:eof

::--------------------------------------------------------
:: fonction : changement de valeur classique
::--------------------------------------------------------

:fonction
echo.  execution de la subroutine
set "var=valeur"
goto:eof

Passage par référence

On passe le nom de la variable à modifier ; la routine l'affecte via set %~1=valeur.

@echo off

set var=
echo avant appel de la fonction var = %var%
call:fonction var
echo apres appel de la fonction var = %var%

echo.&pause&goto:eof

::--------------------------------------------------------
:: fonction : changement de valeur par reference
::--------------------------------------------------------

:fonction
echo. execution de la subroutine
set %~1=valeur
goto:eof

Voir aussi