La commande : "SHIFT" est activé Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. disponible
Les exemples pour la commande "SHIFT"
Le
`SHIFT`La commande dans l’invite de commande Windows est utilisée pour déplacer la position des paramètres dans un fichier batch. Voici quelques exemples d'utilisation du
`SHIFT`-Commande:
Exemple 1 : Parcourir les paramètres dans un fichier batch :
@ECHO OFF
:LOOP
IF "%1"=="" GOTO END
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END
Description : Cet exemple utilise une boucle pour parcourir tous les paramètres d'un fichier batch et les afficher un par un. La commande
`SHIFT`est utilisé pour déplacer la position des paramètres.
Exemple 2 : somme des paramètres dans un fichier batch :
@ECHO OFF
SET TOTAL=0
:ADD_LOOP
IF "%1"=="" GOTO END_ADD
SET /A TOTAL+= %1
SHIFT
GOTO ADD_LOOP
:END_ADD
ECHO total: %TOTAL%
Description : Dans cet exemple, les paramètres sont additionnés dans une boucle. La commande
`SHIFT`déplace la position du paramètre, et
`SET /A`est utilisé pour mettre à jour le total.
Exemple 3 : Travailler avec des boucles imbriquées et SHIFT :
@ECHO OFF
:OUTER_LOOP
IF "%1"=="" GOTO END_OUTER
ECHO Outer Parameter: %1
SHIFT
:INNER_LOOP
IF "%1"=="" GOTO END_INNER
ECHO Inner Parameter: %1
SHIFT
GOTO INNER_LOOP
:END_INNER
GOTO OUTER_LOOP
:END_OUTER
Description : Cet exemple montre comment
`SHIFT`peut être utilisé dans des boucles imbriquées. La boucle externe traite les paramètres externes tandis que la boucle interne traite les paramètres internes.
Exemple 4 : Sauter des paramètres avec SHIFT :
@ECHO OFF
SHIFT
SHIFT
ECHO Troisième Parameter: %1
Description : Ici, les deux premiers paramètres sont utilisés avec deux
`SHIFT`les commandes sont ignorées et le troisième paramètre est affiché.
Exemple 5 : Vérifier et gérer les paramètres :
@ECHO OFF
:PARAM_LOOP
IF "%1"=="" GOTO END_PARAM
IF /I "%1"=="/DEBUG" (
ECHO Debug-Mode activé.
SHIFT
GOTO PARAM_LOOP
)
ECHO Processus Parameter: %1
SHIFT
GOTO PARAM_LOOP
:END_PARAM
Description : Cet exemple vérifie si le premier paramètre est
"/DEBUG". Si tel est le cas, un message est émis et le paramètre est ignoré.
Le
`SHIFT`La commande est particulièrement utile dans les scripts batch où un nombre variable de paramètres doivent être traités. Noter que
`SHIFT`déplace le contenu de la liste des paramètres et réaffecte les positions des paramètres. Il est donc important
`SHIFT`Utilisez-le à bon escient et selon la logique de votre script batch.
"SHIFT" Extrait de l'aide de Microsoft Windows
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\WINDOWS>
Change la position de paramètres remplaçables dans un programme de commandes.
SHIFT [/n]
Si les extensions de commandes sont activées, la commande SHIFT prend en charge
le commutateur /n qui lui indique de commencer le décalage au énième argument,
où n est compris entre 0 et 8. Par exemple :
SHIFT /2
décalerait %3 en %2, %4 en %3, etc. et laisserait %0 et %1 intacts.
Informations importantes, conseils pour la commande "SHIFT"
Lors de l'utilisation du
`SHIFT`commande dans les scripts batch, il y a certains aspects importants à prendre en compte :
1.
Perte de paramètres : Si vous
`SHIFT`cela déplace la position des paramètres dans la liste des paramètres vers la gauche. Cela signifie que la valeur du premier paramètre (
`%1`) par celui du deuxième paramètre (
`%2`) est remplacé, le deuxième paramètre devient le troisième (
`%3`), et ainsi de suite. La valeur du dernier paramètre (
`%9`) est perdu, et la valeur de
`%0`(le nom du script) reste inchangé.
2.
Nombre de quarts de travail : Vous pouvez
`SHIFT`seulement neuf fois dans un script batch car il n'y a que neuf paramètres numériques (
`%0`jusqu'à
`%9`) donne. Après le neuvième décalage, la valeur du neuvième paramètre reste perdue.
3.
SHIFT en boucles : Si vous
`SHIFT`dans une boucle, vous devez vous assurer que les conditions sont correctement vérifiées pour éviter une boucle infinie s'il n'y a pas d'autres paramètres.
@ECHO OFF
:LOOP
IF "%1"=="" GOTO END_LOOP
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END_LOOP
4.
SHIFT dans les boucles imbriquées : Si vous
`SHIFT`dans les boucles imbriquées, notez que le déplacement des paramètres dans une boucle affecte également les positions des paramètres dans les boucles imbriquées.
@ECHO OFF
:OUTER_LOOP
IF "%1"=="" GOTO END_OUTER
ECHO Outer Parameter: %1
SHIFT
:INNER_LOOP
IF "%1"=="" GOTO END_INNER
ECHO Inner Parameter: %1
SHIFT
GOTO INNER_LOOP
:END_INNER
GOTO OUTER_LOOP
:END_OUTER
5.
Expansion retardée et SHIFT : Si vous
`SHIFT`en combinaison avec une expansion retardée (
`ENABLEDELAYEDEXPANSION`), noter que
`!`n'est pas utilisé pour une expansion retardée
`%`.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET COUNT=0
:LOOP
IF "!1"=="" GOTO END_LOOP
SET /A COUNT+=1
SHIFT
GOTO LOOP
:END_LOOP
ECHO nombre de Parameter: %COUNT%
Il est important de considérer l'ordre et la fréquence des
`SHIFT`planifiez soigneusement pour vous assurer que les paramètres sont déplacés comme prévu et qu'aucune information n'est perdue. Vérification également des paramètres vides (
`IF "%1"==""`) est important pour éviter les boucles infinies.