将parameter passing给batch file

如何显示与开关A和开关B相关的值,而不pipeA和B的指定顺序如何?

考虑以下对batch fileParamTest.cmd的调用:

C:\Paramtest.cmd \A valueA \B valueB 

这里是C:\ Paramtest.cmd的内容:

 ECHO Param1=%1 ECHO Param2=%2 ECHO Param3=%3 ECHO Param4=%4 

输出:

 Param1=\A Param2=valueA Param3=\B Param4=valueB 

我希望能够识别交换机名称A和B所传递的两个值,而不pipe这些交换机通过的顺序

例如,如果我执行以下调用:

 C:\Paramtest.cmd \B valueB \A valueA 

我希望能够显示

 A=ValueA B=ValueB 

..并且即使我调用param顺序切换的batch file也具有相同的输出:

C:\ Paramtest.cmd \ A值A \ B值B

我该怎么做呢?

Solutions Collecting From Web of "将parameter passing给batch file"

简而言之,您需要定义一个循环并成对处理参数。

我通常使用涉及标签和GOTO以及SHIFT的方法来处理参数列表,基本上是这样的:

 … SET ArgA= default for A SET ArgB= default for B :loop IF [%1] == [] GOTO continue IF [%1] == [/A] … IF [%1] == [/B] … SHIFT & GOTO loop :continue … 

也可以使用%*掩码和FOR循环来处理参数,如下所示:

 … SET ArgA= default for A SET ArgB= default for B FOR %%p IN (%*) DO ( IF [%%p] == [/A] … IF [%%p] == [/B] … ) … 

但是对于你的情况来说更难一些,因为你需要成对处理参数。 在我看来,第一种方法更加灵活。