Lot-Script - Itérer à travers les arguments

J'ai un lot de script avec plusieurs arguments. Je lis le nombre total d'entre eux et l'exécution d'une boucle for comme ceci:

@echo off
setlocal enabledelayedexpansion

set argCount=0
for %%x in (%*) do set /A argCount+=1
echo Number of processed arguments: %argCount%

set /a counter=0
for /l %%x in (1, 1, %argCount%) do (
set /a counter=!counter!+1 )

Ce que je veux faire maintenant, c'est d'utiliser ma course variable (x ou counter) pour accéder à des arguments d'entrée. Je pense aobut quelque chose comme ceci:

REM Access to %1 
echo %(!counter!)

Dans un monde idéal, cette ligne doit imprimer mon premier argument de ligne de commande, mais évidemment, il ne le fait pas. Je sais que je fais quelque chose de mal avec l' % de l'opérateur, mais est-il de toute façon j'ai pu accéder à mes arguments comme cela?

//edit: Juste pour clarifier les choses, le problème est que %(!counter!) me donne la valeur de la variable counter. Sens pour counter=2 il me donne 2 et non pas le contenu de %2.

  • si les arguments sont plus que 9 vous ne pouvez pas accéder à toutes, sans shift
  • C'est une autre question que je pourrais rencontrer, mais nous allons simplement supposer que je vais avoir moins de 10 arguments
  • Aussi, for %%x in (%*) do ... ne donnera pas le résultat souhaité si un paramètre contient * ou ? caractère. J'ai toujours utiliser un GOTO boucle avec la touche SHIFT si je veux charger les paramètres dans un tableau de variables.
InformationsquelleAutor Toby | 2013-11-07