批量不工作(如果)

时间:2014-12-16 10:07:20

标签: batch-file cmd

master.bat

@echo off
    if !%~1! == !--Instance! (
        if !%~2! == !old! (
            echo Old instance
            set /p InstanceId= Enter the InstanceId:
            echo %InstanceId%
        )
        if !%~2! == !new! (
            echo New instance
        )
    ) else (
        if !%~1! neq !--Instance! (
            echo Bad command: Unknown Flag/Switch %1    
        ) else (
            if !%~2! neq !new! **(
                echo Bad command: Incorrect Flag value %2
            )
        )
    )   

Q1:上述代码适用于所有条件,但最后一个条件标记为(**)以获得可读性。我无法理解为什么?     我正在运行以下命令

master.bat --Instance abc

Q2:我还希望更改相同的(**)行以检查另一个值'old'(为清晰起见,引号)。怎么做 ?这会有用吗

if !%~2! neq !new! or !%~2! neq !old! ( echo Bad command: Incorrect Flag value %2 )

1 个答案:

答案 0 :(得分:0)

回答q1:最后我认出了我的错误,实际上控件从未到达过阻挡区(**)。

回答q2:并对其上方的代码段进行细微更改将以预期的方式运行。

@echo off
setlocal

if !%~1! == !--Instance! (
    if !%~2! == !old! (
        echo Old instance
        echo %InstanceId%
        set /p InstanceId= Enter the InstanceId: 
        call DescribeOldEC2.bat %InstanceId%
        echo %InstanceId%
    ) else (
        if !%~2! == !new! (
            echo New instance
        ) else (
            echo Bad command: Incorrect Flag value %2
        )
    )   
) else (
    if !%~1! neq !--Instance! (
        echo Bad command: Unknown Flag/Switch %1    
    ) 

endlocal