batch-file
Arguments de ligne de commande de fichier batch
Recherche…
Arguments de ligne de commande fournis aux fichiers de commandes
Les arguments de ligne de commande du fichier batch sont des valeurs de paramètres soumises lors du démarrage du lot. Ils doivent être placés entre guillemets s'ils contiennent des espaces. Dans un fichier batch en cours d'exécution, les arguments sont utilisés à des fins diverses, par exemple la redirection vers :labels
, les variables de configuration ou les commandes en cours d'exécution.
Les arguments sont mentionnés dans le fichier de commandes à l'aide de %1, %2, ..., %9
.
@echo off
setlocal EnableDelayedExpansion
if not "%1"=="" (
set "dir=%~1" & set "file=%~2"
type !dir!\!file! | find /n /i "True" >nul^
&& echo Success! || echo Failure
)
exit /b
C:\Users\UserName> test.bat "C:\Temp\Test Results" "Latest.log"
Success!
Remarques:
- Dans l'exemple ci-dessus, les guillemets doubles sont supprimés en utilisant le modificateur d'argument
%~1
. - Les longues chaînes sont divisées en plusieurs lignes à l'aide de
^
et il y a un espace avant le caractère sur la ligne suivante.
Fichiers batch avec plus de 9 arguments
Lorsque plus de 9 arguments sont fournis, la commande shift [/n]
peut être utilisée, où /n
signifie commencer au nième argument, n est compris entre zéro et huit.
En boucle à travers les arguments:
:args
set /a "i+=1"
set arg!i!=%~1
call echo arg!i! = %%arg!i!%%
shift
goto :args
Notez que dans l'exemple ci-dessus, la variable d'extension retardée i
est utilisée pour affecter des valeurs d'argument au tableau de variables. La commande call
permet d'afficher ces valeurs de variables dans la boucle.
Arguments de comptage:
for %%i in (%*) do (set /a ArgCount+=1)
echo %ArgCount%
Définissez une variable sur son argument:
set i=5
call set "path%i%=%%~i"
Déplacement des arguments entre parenthèses
Ayons l' example.bat
suivant et appelons-le avec les arguments 1
, 2
et 3
:
@echo off
(
shift
shift
echo %1
)
Comme l'expansion de la variable changera une fois que le contexte des parenthèses de fin sera atteint, la sortie sera:
1
Comme cela pourrait poser problème lors du changement de parenthèse pour accéder à l'argument, vous devrez utiliser l'appel:
@echo off
(
shift
shift
call echo %%1
)
maintenant la sortie sera 3
. Comme la commande CALL
est utilisée (ce qui entraînera une extension de variable supplémentaire) avec cette technique, les arguments accédant peuvent également être paramétrés:
@echo off
set argument=1
shift
shift
call echo %%%argument%
avec expansion retardée:
@echo off
setlocal enableDelayedExpansion
set argument=1
shift
shift
call echo %%!argument!
la sortie sera
3