Comme d'autres l'ont déjà dit, les paramètres passés via la ligne de commande sont accessibles dans des fichiers batch avec la notation %1
to %9
. Il existe également deux autres jetons que vous pouvez utiliser:
%0
est le nom de l'exécutable (fichier batch) tel que spécifié dans la ligne de commande .
%*
est tous les paramètres spécifiés dans la ligne de commande - ceci est très utile si vous souhaitez transmettre les paramètres à un autre programme.
Il existe également de nombreuses techniques importantes à connaître en plus de la simple façon d'accéder aux paramètres.
Vérifier si un paramètre a été passé
Ceci est fait avec des constructions comme IF "%~1"==""
, qui est vrai si et seulement si aucun argument n'a été passé du tout. Notez le caractère tilde qui entraîne la suppression des guillemets environnants de la valeur de %1
; sans tilde, vous obtiendrez des résultats inattendus si cette valeur comprend des guillemets doubles, y compris la possibilité d'erreurs de syntaxe.
Gérer plus de 9 arguments (ou simplement rendre la vie plus facile)
Si vous avez besoin d'accéder à plus de 9 arguments, vous devez utiliser la commande SHIFT
. Cette commande décale les valeurs de tous les arguments d'un seul endroit, de sorte que %0
prend la valeur de %1
, %1
prend la valeur de %2
, etc. %9
prend la valeur du dixième argument (s'il y en a un), qui n'était disponible via aucune variable avant l'appel SHIFT
(entrez commande SHIFT /?
pour plus d'options).
SHIFT
est également utile lorsque vous souhaitez traiter facilement des paramètres sans exiger qu'ils soient présentés dans un ordre spécifique. Par exemple, un script peut reconnaître les indicateurs -a
et -b
dans n'importe quel ordre. Un bon moyen d'analyser la ligne de commande dans de tels cas est
:parse
IF "%~1"=="" GOTO endparse
IF "%~1"=="-a" REM do something
IF "%~1"=="-b" REM do something else
SHIFT
GOTO parse
:endparse
REM ready for action!
Ce schéma vous permet d'analyser des lignes de commande assez complexes sans devenir fou.
Substitution de paramètres de lot
Pour les paramètres qui représentent des noms de fichiers, le shell fournit de nombreuses fonctionnalités liées au travail avec des fichiers qui ne sont accessibles d'aucune autre manière. Cette fonctionnalité est accessible avec des constructions commençant par %~
.
Par exemple, pour obtenir la taille du fichier passé en argument, utilisez
ECHO %~z1
Pour obtenir le chemin du répertoire à partir duquel le fichier de commandes a été lancé (très utile!), Vous pouvez utiliser
ECHO %~dp0
Vous pouvez afficher la gamme complète de ces fonctionnalités en tapant CALL /?
dans l'invite de commande.