DOS/Shift

Un livre de Wikilivres.
< DOS
Sauter à la navigation Sauter à la recherche
Commandes DOS

Introduction[modifier | modifier le wikicode]

La commande SHIFT permet de faire un décalage des paramètres.

Dans un script, il est possible d'accéder aux paramètres de la ligne de commande en utilisant les variables %0, %1, %2, etc. L'appel de la commande SHIFT décale le contenu des variables dans la variable précédente, ainsi %0 contient ce que contenait %1, %1 contient ce que contenait %2, etc.

Ceci peut être utile pour lister et traiter tous les paramètres. Il suffit de ne lire que la variable %1 et de faire un appel à la commande SHIFT à chaque boucle.

Utilisation[modifier | modifier le wikicode]

SHIFT [/n]

n représente un nombre indiquant le paramètre à partir duquel le décalage des paramètres commence.

Exemple[modifier | modifier le wikicode]

Le script suivant affiche les informations sur les paramètres de la ligne de commande en bouclant sur ceux-ci.

@ECHO OFF

SET /A nbParams=0

ECHO Nom de la commande : %0

:debut_boucle
IF "%1"=="" GOTO fin_boucle

ECHO Paramètre courant : %1
SHIFT
SET /a nbParams+=1

GOTO debut_boucle
:fin_boucle

ECHO Nombre de paramètres : %nbParams%

Dans cet exemple, la boucle s'arrête lorsque le paramètre est un texte vide signifiant qu'il n'y a plus de paramètre.


Si les paramètres attendus par le batch sont des noms de fichier, pour éviter une erreur avec les noms de fichiers contenant des espaces sur la ligne de code

IF "%1"=="" 

Il faut passer par une variable intermédiaire et un test de l’existence de cette variable Comme ceci :

@ECHO OFF

SET /A nbParams=0

ECHO Nom de la commande : %0

:debut_boucle
SET ficparam1=%1
IF NOT DEFINED ficparam1 GOTO fin_boucle

ECHO Paramètre courant : %1
SHIFT
SET /a nbParams+=1

GOTO debut_boucle
:fin_boucle