Utilisation d'alias dans des fichiers batch

Une façon de simplifier la programmation de fichiers batch consiste à utiliser des alias pour masquer les détails inutiles dans un fichier batch. Par exemple, supposons que vous souhaitiez qu'un fichier de commandes vérifie certaines erreurs, affiche un message et se ferme s'il en rencontre une. Cet exemple montre une façon de procéder :

 

setlocal

unalias *

erreur d'alias `echo. & echo ERREUR : %$ & aller au menu disp`

alias erreur fatale `echo. & echo ERREUR FATALE : %$ & quitter`

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

s'il n'existe pas, setup.btm fatalerror Fichier d'installation manquant !

appeler setup.btm

cls

:affichagemenu

texte

1. Traitement de texte

2. Solitaire

3. Internet

4. Sortie

texte de fin

écho.

inkey Saisissez votre choix : %%userchoice

changer %userchoice

cas 1

  input Saisissez le nom du fichier : %%fname

  s'il n'existe pas, erreur fname Le fichier n'existe pas

  dans d:\lettres c:\windows\wordpad.exe

cas 2

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

cas 3

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

cas 4

  je dois faire

défaut

 erreur Choix invalide, réessayez

interrupteur de fin de course

aller au menu d'affichage

:fait

endlocal

 

Le plus le premier alias, ERROR, affiche simplement un message d'erreur et passe à l'étiquette DISPMENU pour réafficher le menu. Le %$ dans la seconde ECHO La commande affiche tout le texte passé à ERREUR comme contenu du message. L'alias FATALERROR similaire 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 passe à ce répertoire avec un pushd commande. 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 basculer vers un répertoire, exécuter une application et revenir en arrière. Il pourrait également être utilisé depuis la ligne de commande.

 

Les 9 lignes suivantes impriment un menu à l'écran, puis obtiennent une frappe de l'utilisateur et stockent la frappe dans une variable d'environnement appelée choix de l'utilisateur. Puis le INTERRUPTEUR La commande est utilisée pour tester la frappe de l'utilisateur et pour décider quelle action entreprendre.

 

Il existe un autre aspect des alias dans les fichiers batch. Si vous envisagez de distribuer vos fichiers batch à d'autres personnes, vous devez vous rappeler qu'ils peuvent avoir des alias définis pour les commandes que vous allez utiliser. Par exemple, si l'utilisateur a un alias CD à CDD et vous ne vous y attendez pas, votre fichier risque de ne pas fonctionner comme prévu. Il existe deux manières de résoudre ce problème.

 

La méthode la plus simple consiste à utiliser setlocal, ENDLOCAL, UNALIAS pour effacer les alias avant le démarrage de votre fichier batch, et RÉGLAGES 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. Rappelez-vous que setlocal et ENDLOCAL enregistrera et restaurera non seulement les alias mais également 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 * avant 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 LISTE DES FICHIERS:

 

rép /b > liste de fichiers

 

Cependant, si l'utilisateur a redéfini DIR avec un alias, cette commande risque de ne pas faire ce que vous souhaitez. Pour contourner ce problème, utilisez simplement :

 

*dir /b > liste de fichiers

 

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 en tant que commande interne, commande externe ou fichier batch. L'utilisation d'un astérisque avant une commande fonctionnera, qu'il existe ou non un alias défini avec le même nom que la commande. S'il n'y a pas d'alias portant ce nom, l'astérisque sera ignoré et la commande sera traitée comme si l'astérisque n'était pas là.