tags:

views:

403

answers:

2

I'd like to make sure that when calling my batch, no more than 2 parameters are passed.

Is there an easy way to check that, or do I have to call SHIFT as many times as needed until the parameter value is empty ?

+2  A: 

You can simply test for existence of a third parameter and cancel if present:

if not [%3]==[] (
    echo No more than two arguments, please
    goto :eof
)

But more specifically, there is no direct way of getting the number of arguments passed to a batch, short of shifting and counting them. So if you want to make sure that no more than 19 arguments are passed, then you need to do exactly that. But if the number of expected arguments is below 9 above method works well.

Joey
Silly me, didn't even think about such a simple way !Thanks !
Jérôme
+2  A: 
IF NOT "%3"=="" GOTO Too_Many_Args
mjv