批量 - 如果此时其他Goto意外

时间:2016-05-09 05:59:48

标签: windows batch-file if-statement command-line cmd

我知道有更好的方法可以使用不同的语言。虽然我需要批量完成。甚至不是powershell。是的,我知道这是2016年.xD

我的问题是" Goto此时出乎意料"

我不知道这是否可行,但我确信这是可能的。

:START_CMD
COLOR 02 & CLS & TITLE COMMAND WINDOW
ECHO. 
SET /P _act=$ || Set _act=za
IF /I [%_act%]==[exit] (
GOTO :LOCK
) ELSE (
IF /I [%_act%]==[lock] (
GOTO :LOCK
) ELSE (
IF /I [%_act%]==[login] (
GOTO :UNLOCK_L1
) ELSE (
IF /I [%_act%]==[path] (
ECHO. & ECHO Current Path: %universalpath% & ECHO. & PAUSE & CLS & GOTO :START_CMD
) ELSE (
IF /I [%_act%]==[check] (
GOTO :HELP
) ELSE (
IF /I [%_act%]==[sudo] (
GOTO :HELP
) ELSE (
IF /I [%_act%]==[report] (
GOTO :SECURITY_LOGIN
) ELSE (
IF /I [%_act%]==[help] (
GOTO :HELP
) ELSE (
IF /I [%_act%]==[whoami] (
GOTO :WHOAMI_NOT_LOGIN
) ELSE (
SET _act=$_act: =%
)

IF /I NOT %_act%==za GOTO :START_CMD
GOTO :START_CMD

2 个答案:

答案 0 :(得分:0)

哦,最后右括号在哪里?

:START_CMD
COLOR 02 & CLS & TITLE COMMAND WINDOW
ECHO. 
SET /P _act=$ || Set _act=za
IF /I [%_act%]==[exit] (
    GOTO :LOCK
) ELSE (
    IF /I [%_act%]==[lock] (
        GOTO :LOCK
    ) ELSE (
        IF /I [%_act%]==[login] (
            GOTO :UNLOCK_L1
        ) ELSE (
            IF /I [%_act%]==[path] (
                ECHO. & ECHO Current Path: %universalpath% & ECHO. & PAUSE & CLS & GOTO :START_CMD
            ) ELSE (
                IF /I [%_act%]==[check] (
                    GOTO :HELP
                ) ELSE (
                    IF /I [%_act%]==[sudo] (
                        GOTO :HELP
                    ) ELSE (
                        IF /I [%_act%]==[report] (
                            GOTO :SECURITY_LOGIN
                        ) ELSE (
                            IF /I [%_act%]==[help] (
                                GOTO :HELP
                            ) ELSE (
                                IF /I [%_act%]==[whoami] (
                                    GOTO :WHOAMI_NOT_LOGIN
                                ) ELSE (
                                    SET _act=$_act: =%
                                )
                            )
                        )
                    )
                )
            )
        )
    )
)

IF /I NOT %_act%==za GOTO :START_CMD
GOTO :START_CMD

顺便问一下,你认为SET _act=$_act: =%能起作用吗?这似乎是一个简单的问题,你这么认为吗?

答案 1 :(得分:0)

IF /I [%_act%]==[exit] GOTO :LOCK  
IF /I [%_act%]==[lock] GOTO :LOCK  
IF /I [%_act%]==[login] GOTO :UNLOCK_L1  
IF /I [%_act%]==[path] ECHO. & ECHO Current Path: %universalpath% & ECHO. & PAUSE & CLS & GOTO :START_CMD  
IF /I [%_act%]==[check] GOTO :HELP  
IF /I [%_act%]==[sudo] GOTO :HELP  
IF /I [%_act%]==[report] GOTO :SECURITY_LOGIN  
IF /I [%_act%]==[help] GOTO :HELP 
IF /I [%_act%]==[whoami] GOTO :WHOAMI_NOT_LOGIN  
IF /I NOT [%_act%]==[za] GOTO :START_CMD  
GOTO :START_CMD  

这同样有效,而且效率更高。