Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Batch-Script - Iterate through arguments

I have a batch-script with multiple arguments. I am reading the total count of them and then run a for loop like this:

@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 ) 

What I want to do now, is to use my running variable (x or counter) to access the input arguments. I am thinking aobut something like this:

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

In an ideal world this line should print out my first command line argument but obviously it doesn't. I know I am doing something wrong with the % operator, but is there anyway I could access my arguments like this?

//edit: Just to make things clear - the problem is that %(!counter!) provides me with the value of the variable counter. Meaning for counter=2 it gives me 2 and not the content of %2.

like image 336
Toby Avatar asked Nov 07 '13 12:11

Toby


2 Answers

@echo off setlocal enabledelayedexpansion  set argCount=0 for %%x in (%*) do (    set /A argCount+=1    set "argVec[!argCount!]=%%~x" )  echo Number of processed arguments: %argCount%  for /L %%i in (1,1,%argCount%) do echo %%i- "!argVec[%%i]!" 

For example:

C:> test One "This is | the & second one" Third Number of processed arguments: 3 1- "One" 2- "This is | the & second one" 3- "Third" 

Another one:

C:> test One Two Three Four Five Six Seven Eight Nine Ten Eleven Twelve etc... Number of processed arguments: 13 1- "One" 2- "Two" 3- "Three" 4- "Four" 5- "Five" 6- "Six" 7- "Seven" 8- "Eight" 9- "Nine" 10- "Ten" 11- "Eleven" 12- "Twelve" 13- "etc..." 
like image 101
Aacini Avatar answered Oct 14 '22 07:10

Aacini


:loop @echo %1 shift if not "%~1"=="" goto loop 
like image 37
Jay Taylor Avatar answered Oct 14 '22 06:10

Jay Taylor