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



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow