无论指定A和B的顺序如何,我如何显示与开关A和开关B相关的值?
考虑以下对批处理文件ParamTest.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传递的 TWO 值,而不管这些开关的传递顺序
例如,如果我执行以下调用:
C:\Paramtest.cmd \B valueB \A valueA
我希望能够显示
A=ValueA
B=ValueB
..并且即使我在切换参数顺序的情况下调用批处理文件也具有相同的输出:
C:\ Paramtest.cmd \ a valueA \ B valueB
我该怎么做?
答案 0 :(得分:8)
简而言之,您需要定义循环并成对处理参数。
我通常使用涉及标签和方法的方法来处理参数列表。 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] …
)
…
但是对于你的情况来说这有点困难,因为你需要成对处理参数。在我看来,第一种方法更灵活。