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 |