Comment passer plus de 10 arguments dans le fichier de commandes Windows ou le script shell Linux

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} .