Cha*_*adD 5 windows batch-file
无论指定A和B的顺序如何,我如何显示与开关A和开关B相关的值?
考虑以下对批处理文件ParamTest.cmd的调用:
C:\Paramtest.cmd \A valueA \B valueB
Run Code Online (Sandbox Code Playgroud)
这是C:\ Paramtest.cmd的内容:
ECHO Param1=%1
ECHO Param2=%2
ECHO Param3=%3
ECHO Param4=%4
Run Code Online (Sandbox Code Playgroud)
输出:
Param1=\A
Param2=valueA
Param3=\B
Param4=valueB
Run Code Online (Sandbox Code Playgroud)
我希望能够识别它们的交换机名称A和B传递的两个值,而不管这些交换机的传递顺序如何
例如,如果我执行以下调用:
C:\Paramtest.cmd \B valueB \A valueA
Run Code Online (Sandbox Code Playgroud)
我希望能够展示
A=ValueA
B=ValueB
Run Code Online (Sandbox Code Playgroud)
..即使我在切换参数顺序的情况下调用批处理文件,也有相同的输出:
C:\ Paramtest.cmd\valueA\B valueB
我该怎么做呢?
简而言之,您需要定义一个循环并成对处理参数.
我通常使用涉及标签和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
…
Run Code Online (Sandbox Code Playgroud)
也可以使用%*掩码和FOR循环处理参数,如下所示:
…
SET ArgA=default for A
SET ArgB=default for B
FOR %%p IN (%*) DO (
IF [%%p] == [/A] …
IF [%%p] == [/B] …
)
…
Run Code Online (Sandbox Code Playgroud)
但是对于你的情况来说这有点困难,因为你需要成对处理参数.在我看来,第一种方法更灵活.
| 归档时间: |
|
| 查看次数: |
5211 次 |
| 最近记录: |