Le template présenté ici présente les particularitées suivantes
1) pas d'écho
@echo off
2) cartouche d'entete
::******************************************************
::~ usage: $NOM
::~
::~ $DESCRIPTION
::~
::~ date: $DATE
::~ auteur: jean-louis Bicquelet
::~ version: 1.0 $DATE initiale
::******************************************************
3) définition des variables globales
:: variables globales
set LOCAL=c:\usr\local
::=====================================================
4) test du type de système
:: gestion du système
IF NOT "%OS%"=="Windows_NT" goto usage
5) options usage et doc
:: gestion des arguments
if "%1"=="/?" goto usage
if "%1"=="/doc" goto doc
6) comptage du nombre d'arguments
set argc=0
for %%x in (%*) do Set /A argc+=1
rem call :getargc argc %*
7) procédure en fonction du nombre d'argument
if "%argc%" == "0" goto pas_d_argument
if "%argc%" == "1" goto 1_argument
if "%argc%" == "2" goto 2_arguments
if "%argc%" == "3" goto 3_arguments
if "%argc%" == "4" goto 4_arguments
echo. %argc%
GOTO :EOF
::----------------------------------------------------
:pas_d_argument
echo.pas_d_argument
GOTO :EOF
::----------------------------------------------------
:1_argument
echo.1_argument
GOTO :EOF
::----------------------------------------------------
:2_arguments
echo.2_arguments
GOTO:EOF
::----------------------------------------------------
:3_arguments
echo.3_arguments
GOTO:EOF
::----------------------------------------------------
:4_arguments
echo.4_arguments
GOTO:EOF
8) programme principal
::=====================================================
:: traitement principal
:main
GOTO:EOF
9) fonction getarc pour compter les arguments (optionnelle)
::=====================================================
::# getargc - compte le nombre d'arguments
::#
::# appel : call :getargc argc %*
:getargc
set getargc_v0=%1
set /a "%getargc_v0% = 0"
:getargc_l0
if not x%2x==xx (
shift
set /a "%getargc_v0% = %getargc_v0% + 1"
goto :getargc_l0
)
set getargc_v0=
goto :eof
::----------------------------------------------------
10) afficher l'usage avec sed
::----------------------------------------------------
:usage
type %~nx0 | findstr /B "::~" |sed "s/... //"
GOTO:EOF
11) afficher la doc avec une autre entete de commentaire
:----------------------------------------------------
:doc
type %~nx0 | findstr /B "::# " |sed "s/... //"
GOTO:EOF
Quelques remarques:
point 1: Ne pas oublier si on ne veut pas afficher les commandes exécutées.
point 2 et 10:L'usage se trouve dans l'entête en tant que commentaire. C'est pou cela que les lignes commence par la séquence ::~. :: indique une ligne de commentaire.
Un tilde permet de distinguer les lignes réserver à l'usage.
Pour afficher on utilise la commande
type %~nx0 | findstr /B "::~" |sed "s/... //"
La fonction sed n'est pas native mais on peut facilement trouver une exécutable gnu pour windows.
point 4: Le format utilise la notation dos avec le slash (/), mais vous pouvez utiliser une écritue linux-- ou unix -).
point 6 et 9: La plus simple façon de compter les arguments est
set argc=0 for %%x in (%*) do Set /A argc+=1
On retrouve les arguments ensuite avec les variables %1,%2,%3,...
Je n'ai pas résisté à introduire une fonction pour compter les arguments. Vous pouvez utiliser l'un ou l'autre.
point 7:On appelle une routine en fonction du nombre d'argument.
Les variables globales %1,%2,%3,... sont utilisées. Un passage par argument aurait été possible.
| description | version | date | téléchargement |
| script de template | 1.0 | 19/08/2016 | template.bat |