Comment puis-je passer des arguments à un fichier batch ?

J'ai besoin de transmettre un identifiant et un mot de passe à un fichier batch au moment de l'exécution plutôt que de les coder en dur dans le fichier.

Voici à quoi ressemble la ligne de commande :

test.cmd admin P@55w0rd > test-log.txt

Une autre astuce utile consiste à utiliser %* pour signifier "tous". Par exemple :

echo off
set arg1=%1
set arg2=%2
shift
shift
fake-command /u %arg1% /p %arg2% %*

Lorsque vous exécutez :

test-command admin password foo bar

le fichier batch ci-dessus sera exécuté :

fake-command /u admin /p password admin password foo bar

La syntaxe est peut-être légèrement erronée, mais c'est l'idée générale.

Commentaires (9)

Si vous voulez gérer intelligemment les paramètres manquants, vous pouvez faire quelque chose comme :

IF %1.==. GOTO No1
IF %2.==. GOTO No2
... do stuff...
GOTO End1

:No1
  ECHO No param 1
GOTO End1
:No2
  ECHO No param 2
GOTO End1

:End1
Commentaires (4)

Oui, et n'oubliez pas d'utiliser des variables comme %%1 lorsque vous utilisez if et for et la bande.

Si vous oubliez le double %, alors vous substituerez des arguments de ligne de commande (éventuellement nuls) et vous recevrez des messages d'erreur plutôt déroutants.

Commentaires (5)