Je dois transmettre plus de 10 arguments à un seul fichier de commandes (script shell) mais après le 9ème argument, cela ne fonctionnera pas (cela prendra du début)
exemple de code
echo Hello! This a sample batch file. echo %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 pause >mybatchdotbat abcdefghijklmnop
quelqu’un peut-il donner une solution pour cela
Vous pouvez obtenir tous les parameters avec %*
et les parsingr avec une boucle for
:
for %%i in (%*) do echo %%i
Remarque: vos parameters ne peuvent pas contenir certains caractères (“délimiteurs standard”), par exemple ,
ou ;
sauf si vous les citez:
mybatch.bat first second "this is the third" "four, not five" five 6 7 8 9 ...
Fondamentalement, %10
est interprété comme %1
0
.
Pour résoudre ce problème, dans un fichier de commandes ou un script de shell, vous pouvez enregistrer le premier argument dans une variable, puis utiliser shift
pour décrémenter tous les arguments restants de 1. Lorsque vous appelez shift
, %1
( $1
dans un script shell) est maintenant disparu, l’ancien %2
devient %1
, l’ancien %3
devient %2
, etc. Voir cette réponse pour plus de détails.
Dans un script shell, vous pouvez également vous référer au dixième argument en utilisant ${10}
.