Utilisation d'alias dans les fichiers batch

L'un des moyens de simplifier la programmation des fichiers batch consiste à utiliser des alias pour masquer les détails inutiles dans un fichier batch. Supposons, par exemple, que vous souhaitiez qu'un fichier batch vérifie la présence de certaines erreurs, affiche un message et quitte l'application si l'une d'entre elles est rencontrée. Cet exemple montre une façon de procéder :

 

setlocal

unalias *

alias error `echo. & echo ERROR: %$ & goto dispmenu`

alias fatalerror `echo. & echo FATAL ERROR: %$ & quit`

alias in `pushd %1 & %2$ & popd`

if not exist setup.btm fatalerror Missing setup file!

call setup.btm

cls

:dispmenu

text

1. Word Processing

2. Solitaire

3. Internet

4. Exit

endtext

echo.

inkey Enter your choice: %%userchoice

switch %userchoice

case 1

input Enter the file name: %%fname

if not exist fname error File does not exist

in d:\letters c:\windows\wordpad.exe

case 2

in d:\finance c:\windows\sol.exe

case 3

in d:\comm c:\windows\iexplore.exe

case 4

goto done

default

error Invalid choice, try again

endswitch

goto dispmenu

:done

endlocal

 

Le premier alias, ERROR, affiche simplement un message d'erreur et passe à l'étiquette DISPMENU pour réafficher le menu. Le %$ de la deuxième  commande ECHO affiche tout le texte transmis à ERROR comme contenu du message. L'alias similaire FATALERROR affiche le message, puis quitte le fichier batch.

 

Le dernier alias, IN, attend 2 paramètres de ligne de commande ou plus. Il utilise le premier comme nouveau répertoire de travail et change de répertoire à l'aide d'une  commande PUSHD. Le reste de la ligne de commande est interprété comme une autre commande plus d'éventuels paramètres de ligne de commande, que l'alias exécute. Cet alias est utilisé ici pour passer à un répertoire, exécuter une application et revenir en arrière. Il pourrait également être utilisé à partir de la ligne de commande.

 

Les 9 lignes suivantes affichent un menu à l'écran, puis reçoivent une frappe de l'utilisateur et la stockent dans une variable d'environnement appelée choix de l'utilisateur. La commande SWITCH est ensuite utilisée pour tester la frappe de l'utilisateur et décider de l'action à entreprendre.

 

Les alias dans les fichiers batch présentent un autre aspect. Si vous distribuez vos fichiers batch à d'autres personnes, vous devez vous rappeler qu'elles peuvent avoir défini des alias pour les commandes que vous allez utiliser. Par exemple,si l'utilisateur a remplacé CD par CDD et que vous ne vous y attendez pas, votre fichier risque de ne pas fonctionner comme vous l'aviez prévu. Il existe deux façons de résoudre ce problème.

 

Laméthode la plus simple consiste à utiliser SETLOCAL, ENDLOCAL et UNALIAS pour supprimer les alias avant le démarrage du fichier batch, et SETDOS pour sélectionner les caractères spéciaux dont vous dépendez et les restaurer à la fin, comme nous l'avons fait dans l'exemple précédent. N'oubliez pas que SETLOCAL et ENDLOCAL sauvegardent et restaurent non seulement les alias, mais aussi l'environnement, le lecteur et le répertoire actuels, ainsi que divers caractères spéciaux.

 

Si cette méthode n'est pas appropriée ou nécessaire pour le fichier batch sur lequel vous travaillez, vous pouvez également utiliser un astérisque * devant le nom d'une commande. L'astérisque signifie que la commande qui le suit ne doit pas être interprétée comme un alias. Par exemple, la commande suivante redirige une liste de noms de fichiers vers le fichier FILELIST:

 

dir /b > filelist

 

Cependant, si l'utilisateur a redéfini DIR avec un alias, cette commande peut ne pas donner les résultats escomptés. Pour contourner ce problème, il suffit d'utiliser *dir /b > filelist :

 

*dir /b > filelist

 

La même chose peut être faite pour n'importe quelle commande de votre fichier batch. Si vous utilisez l'astérisque, cela désactivera le traitement des alias, et le reste de la commande sera traité normalement comme une commande interne, une commande externe ou un fichier batch. L'utilisation d'un astérisque devant une commande fonctionne qu'il y ait ou non un alias défini avec le même nom que la commande. S'il n'existe pas d'alias portant ce nom, l'astérisque sera ignoré et la commande sera traitée comme si l'astérisque n'existait pas.