Comment passer des paramètres à un batch [Résolu/Fermé]

Signaler
Messages postés
375
Date d'inscription
jeudi 5 août 2004
Statut
Membre
Dernière intervention
14 juin 2021
-
 Juju -
Bonjour,

N'ayant que des connaissances sommaires en commandes batch je voudrais savoir comment on passe des paramètres à un batch.
J'ai un fichier nommé sauvegarde. bat dans lequel je veux créer 2 repertoires un nommé sauvegarde 1 l'autre sauvegarde2
Au départ j'ai la commande MD%1 pour créer le premier repertoire,quel texte faut'il écrire pour lui passer le premier paramètre soit sauvegarde1 et ensuite pour passer le second soit sauvegarde2.

Après c'est de la commade avec xcopy qui ne me pose pas de problème.
Merci

8 réponses

Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
124
Bonjour,

petit rectificatif:
echo md c:\%1
affichera
md c:\nom_1er_param_passation
et non pas comme je l'ai indiqué :
md c:\%1
5
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Merci, premier forum, première réponse, et ça fonctionne super bien !
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
124
Bonjour,


Si j'ai bien compris le problème il te suffit d'écrire :

nom_de_ton_.bat sauvegarde1 sauvegarde2

Après validation de cette commande activant l'exécution de batch nom_de_ton_.bat se trouvent :
La chaîne de caractères sauvegarde1 dans %1.
La chaîne de caractères sauvegarde2 dans %2.
frsuujdd
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
124
Tu ne m'ennuies pas.

Ce que tu sembles n'avoir pas très bien compris n'est, apparemment pas l'utilité des paramètres de passation, mais plutôt le moyen de les utiliser, où dans le cas présent le "moment" où il faut les coder dans la chronologie des actions à mener pour activer l'exécution d'un batch.

1) Ecriture d'un batch qui doit récupérer deux paramètres de passation lesquels vraisemblablement orienteront sa logique d'exécution.
Même si cette logique d'exécution se ramène, comme c'est le cas dans ton exemple, à formater une instruction, en l'occurrence :
echo md c:\%1
Ce batch (comme tous les batch) s'attend à recevoir jusquà 9 valeurs &1 à &9 (&0 contient le nom du batch actif). A charge pour sa logique d'exécution de réceptionner, c'est-à-dire d'utiliser (d'exploiter), tout ou partie de ces 9 paramètres.
Ces 10 paramètres sont positionnels &0 = nom du batch. Si &1 présent &1 = 1er paramètre, Si &1 ET &2 présents &2 = 2em paramètre, Si &1 ET &2 ET &3 présents &3 = 3em paramètre, ect......
2) Activation du batch. Pour ce faire il suffit de taper dans la ligne de commande son nom. Les différentes commandes et instructions présentes s'exécuteront une à une dans l'ordre "chronologique (goto, cal,l considérés) où elles sont écrites. Dans ce premier cas seul le nom a été tapé au clavier, il s'ensuit que les paramètres &1 à &9 sont vides (NULL) le paramètre &0 est uniquement renseigné avec le nom du batch.
Pour communiquer une ou plusieurs valeurs au batch il suffit de faire suivre son nom,toujours tapé sur la ligne de l'invite de commande (où dans le cas de communication inter-fichiers de commandes comme paramètres d'un call ou d'un start) de un, deux, ...jusqu'à 9 valeurs séparées par au moins un espace. Dans notre cas deux valeurs suivront le nom, exemple :
nom_de_ton_.bat sauvegarde1 sauvegarde2
&1 et &2 sont donc renseignés respectivement avec sauvegarde1 et sauvegarde2, &3 jusquà &9 sont vides de toute valeur (remarque annexe : l'absence d'information/donnée est déjà une information/indication).

Tu n'as par conséquent pas besoin de l'instruction (qui en l'état n'en est pas une), disons d'une instruction particulière, qui te permettrait de renseigner dans ton batch les paramètres &1 à &9 (ici &1 et &2), ils le sont (ou peuvent l'être, car optionnels et positionnels) à l'activation du batch.
bonjour,

C'est bien ça mais le batch ne fonctionne pas les paramètres ne sont pas pris en compte .Donc le repertoire md sauvegarde n'est pas crée.

@echo off

echo c:\appel\essai.bat sauvegarde1 sauvegarde2
echo le premier param est %1
echo le second param est %2
echo md c:\%1

Merci
Messages postés
375
Date d'inscription
jeudi 5 août 2004
Statut
Membre
Dernière intervention
14 juin 2021
8
rebonjour,

Je pense que quelquechose m'échappe dans la compréhension du problème.

Si j'ai le batch suivant:
@echo off
c:\appel\essai.bat reper1 reper2 reper3
echo le premier parametre est %1
echo le second parametre %2
echo le troisieme parametre est %3

echo md c:\%1

Au lancement les paramètres reper1 etc.. ne sont pas transmis à %1 %2 etc..
et à fortiori le repertoire que je veux créer avec md n'est pas crée le batch m'affiche md c:\

Si tu peux le tester sur ton micro et me dire ce que cela te donne
Merci et désolé de t'ennuyer encore
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
124
Bonjour,

C'est ça !

Bon courage,
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
124
Bonjour,

Je ne comprrends pas ce que tu veux faire avec la commande :
echo c:\appel\essai.bat sauvegarde1 sauvegarde2
En l'occurrence elle ne fait qu'afficherà la console la chaîne de caractères :
c:\appel\essai.bat sauvegarde1 sauvegarde2
idem pour : echo md c:\%1 qui affichera à la console : md c:\%1

Si ton fichier, tel que tu le définis, est appelé (exécuté) avec deux paramètres de passation, ils seront affichés normalement par les commandes :
echo le premier param est %1
echo le second param est %2

la commande echo n'active pas le texte qu'elle contient, elle l'affiche uniquement.
Messages postés
375
Date d'inscription
jeudi 5 août 2004
Statut
Membre
Dernière intervention
14 juin 2021
8
Bonjour,
OK cette fois j'ai compris ce que je ne faisais pas c'est d'écrire dans la ligne de commande du batch, j'écrivais les paramètres dans le texte du batch d'où l'erreur permanente à laquelle j'étais confrontée.

Enfin merci pour le dérangement