168 votes

Utilisation de paramètres dans les fichiers de commandes sur la ligne de commande DOS

Sous Windows, comment accédez-vous à arguments passés en actionnant un fichier batch ?

Par exemple, disons que j’ai un programme nommé . Quand je rentre dans une ligne de commande DOS, comment j’ai laisser mon programme sais que `` a été adoptée en tant qu’argument ?

297voto

Jon Points 194296

Comme d'autres l'ont déjà dit, les paramètres transmis par le biais de la ligne de commande peut être consulté dans des fichiers batch avec la notation %1 de %9. Il y a aussi deux autres jetons que vous pouvez utiliser:

  • %0 est le fichier exécutable (fichier batch) nom, comme spécifié dans la ligne de commande.
  • %* est tous les paramètres spécifiés dans la ligne de commande -- ceci est très utile si vous voulez transférer les paramètres vers un autre programme.

Il y a aussi beaucoup de techniques à connaître en plus de simplement de savoir comment accéder aux paramètres.

Vérifier si un paramètre a été adoptée

Cela se fait avec des constructions comme IF "%~1"=="", ce qui est vrai si et seulement si aucun des arguments ont été transmis à tous. Remarque le caractère tilde qui provoque les guillemets pour être retiré de la valeur de %1; sans tilde, vous obtiendrez des résultats inattendus si cette valeur comprend les guillemets doubles, y compris la possibilité d'erreurs de syntaxe.

La manipulation de plus de 9 arguments (ou tout simplement rendre la vie plus facile)

Si vous avez besoin d'accéder à plus de 9 arguments, vous devez utiliser la commande SHIFT. Cette commande déplace les valeurs de tous les arguments d'un seul endroit, de sorte qu' %0 prend la valeur de %1, %1 prend la valeur de %2, etc. %9 prend la valeur de la dixième argument (si il est présent), ce qui n'était pas disponible par le biais de la variable avant d'appeler SHIFT (entrez la commande SHIFT /? pour plus d'options).

SHIFT est également utile lorsque vous voulez facilement les paramètres de processus sans exiger qu'ils sont présentés dans un ordre spécifique. Par exemple, un script peut reconnaître les drapeaux -a et -b dans n'importe quel ordre. Une bonne façon d'analyser la ligne de commande dans de tels cas est

:parse
IF "%~1"=="" GOTO endparse
IF "%~1"=="-a" REM do something
IF "%~1"=="-b" REM do something else
SHIFT
GOTO parse
:endparse
REM ready for action!

Ce schéma permet d'analyser assez complexe de lignes de commande sans passer pour un fou.

La Substitution de paramètres de commandes

Pour les paramètres qui représentent les noms de fichiers le shell fournit de nombreuses fonctions permettant de travailler avec des fichiers n'est pas accessible de toute autre manière. Cette fonctionnalité est accessible avec des constructions qui commencent par %~.

Par exemple, pour obtenir la taille du fichier passé en argument utilisation

ECHO %~z1

Pour obtenir le chemin d'accès du répertoire dans lequel le fichier de commandes a été lancé à partir de (très utile!) vous pouvez utiliser

ECHO %~dp0

Vous pouvez consulter la gamme complète de ces capacités en tapant CALL /? dans l'invite de commande.

58voto

Eric Leschinski Points 14289

Utilisation de paramètres dans les fichiers de commandes: %0 et %9

Lot de fichiers peuvent consulter les mots passés en paramètres avec les jetons: %0 de %9.

%0 is the program name as it was called.
%1 is the first command line parameter
%2 is the second command line parameter
and so on till %9.

les paramètres passés sur la ligne de commande doivent être des caractères alphanumériques et délimités par des espaces. Depuis %0 est le nom du programme qu'il a été appelé, dans DOS, %0 sera vide pour AUTOEXEC.Chauve-souris si au démarrage du système.

Exemple:

Mettre la commande suivante dans un fichier batch appelé mybatch.bat:

@echo off
@echo hello %1 %2
pause

Invoquant le fichier de commandes comme ceci: mybatch john billy sortie:

hello john billy

Obtenez plus de 9 paramètres d'un fichier de commandes, utilisation: %*

Le Pourcentage de Star jeton %* "signifie" le reste des paramètres". Vous pouvez utiliser une boucle for pour les attraper, comme défini ici:

http://www.robvanderwoude.com/parameters.php

Notes au sujet de séparateurs pour un lot de paramètres

Certains caractères dans la ligne de commande paramètres sont ignorés par lots de fichiers selon la version DOS, qu'ils sont "échappés" ou pas, et souvent en fonction de leur emplacement dans la ligne de commande:

commas (",") are replaced by spaces, unless they are part of a string in 
double quotes

semicolons (";") are replaced by spaces, unless they are part of a string in 
double quotes

"=" characters are sometimes replaced by spaces, not if they are part of a 
string in double quotes

the first forward slash ("/") is replaced by a space only if it immediately 
follows the command, without a leading space

multiple spaces are replaced by a single space, unless they are part of a 
string in double quotes

tabs are replaced by a single space

leading spaces before the first command line argument are ignored

5voto

rud3y Points 737

Lot de Fichiers automatiquement passer le texte après le programme aussi longtemps que leur sont les variables de les attribuer à l'. Ils sont passés dans l'ordre qu'ils sont envoyés; par exemple, %1 sera la première chaîne de caractères envoyée une fois que le programme est appelé, etc.

Si vous avez le Bonjour.chauve-souris et le contenu sont:

@echo off
echo.Hello, %1 thanks for running this batch file (%2)
pause

et vous appelez le lot dans la commande via

bonjour.chauve-souris APerson241 %date%

vous pouvez recevoir ce message:

Bonjour, APerson241 merci pour l'exécution de ce fichier de commandes (01/11/2013)

3voto

tohava Points 1760

Utiliser des variables de la. BAT variables appelées %0 à %9

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X