Scripts BATCH : arguments et extension de variables

Scripts BATCH : arguments et extension de variables

Introduction

Lors de l’exécution d’un script batch, il est possible de lui passer des arguments. Les arguments seront passés les uns à la suite des autres en les séparants, soit par un espace, ou une virgule ou un point virgule, immédiatement à la suite de l’appel du script et seront stockés dans des variables spéciales allant de 1 à 9. Si un argument doit contenir plusieurs termes utilisants les séparateurs d’arguments, alors il faut mettre l’ensemble de ces termes entre guillemets.
Ainsi les arguments pourront êtres utilisés dans ce script en appelant les variables de %1…%9. La variable %0 étant réservé au script d’exécution lui même.
Si le nombre des arguments est supérieur à 9, il est possible de récupérer ce qui dépasse en effectuant la commande SHIFT au cours du script. Cela aura pour effet de « décaler » les arguments d’une position vers le bas. Dans ce cas la variable %9 transmettra son contenu à la variable %8 et ainsi de suite en cascade jusqu’à %1 dont le contenu ne sera plus accessible. Il en ira ainsi pour chaque appel de la commande SHIFT jusqu’à épuisement des arguments.

Les arguments peuvent donc être des informations dynamiques pour le script, mais est très généralement utilisé pour passer le nom d’un ou plusieurs fichier(s) sélectionné(s), sur le(s)quel on veut effectuer un traitement.

Voici le code d’un petit script qui permettra de mieux appréhender ce que je viens d’expliquer ainsi qu’une copie d’écran du résultat avec comme argument le programme Internet Explorer :

Capture

Capture Script Arguments

Code

@ECHO OFF
CLS
ECHO %%1 : %1
Echo %%1 sans Guillemets (%%~1): %~1
Echo %%1 en nom de chemin (%%~f1): %~f1
Echo %%1 en lettre de lecteur (%%~d1): %~d1
Echo %%1 en chemin d'accès (%%~p1): %~p1
Echo %%1 en nom de fichier sans extension (%%~n1): %~n1
Echo %%1 en extension de fichier (%%~x1): %~x1
Echo %%1 chemin étendu en noms courts (%%~s1): %~s1
Echo %%1 en attribut de fichier (%%~a1): %~a1
Echo %%1 en date/heure du fichier (%%~t1): %~t1
Echo %%1 en taille du fichier (%%~z1): %~z1
Echo(
Echo ***** Combinaison Courantes *****
Echo(
Echo %%~dp1 : %~dp1
Echo %%~nx1 : %~nx1
Echo %%~dpnx1 : %~dpnx1
Echo %%~ftza1 : %~ftza1
PAUSE

L’extension de variables

On remarque sur la 1° ligne que l’on affiche la variable %1 tel que le script reçoit l’information. Mais sur les lignes suivantes, on peut voir que l’on appel la variable de base %1 de manières différentes. On lui a ajouté un tidle (caractère ~) suivi d’une lettre entre le % et le 1.

C’est ce qu’on appel l’extension de variable. On peut trouver plus d’informations sur tout ceci dans l’aide de la commande FOR d’un interpréteur de commande (Commande : FOR /?).

Ainsi il est possible de ne récupérer que certaines parties spécifiques d’un argument, ou au contraire de les combiner entre elles.

Laisser un commentaire