简体   繁体   English

批处理-如果Else Goto在这个时候出乎意料

[英]Batch - If Else Goto was unexpected at this time

I know there are better ways of working with a different language. 我知道使用其他语言的更好方法。 Though I need this done in Batch. 虽然我需要分批完成。 Not even powershell. 甚至没有powershell。 Yes, I know this is 2016. xD 是的,我知道这是2016年。xD

My issue is "Goto Was Unexpected At This Time" 我的问题是“此时Goto出乎意料”

I don't know if this is possible but I am sure it is. 我不知道这是否可行,但我敢肯定。

: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

Oh, where are the last right brackets? 哦,最后一个右括号在哪里?

: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

By the way, do you think SET _act=$_act: =% can work? 顺便说一句,您认为SET _act=$_act: =%可以工作吗? It seems a simple problem, do you think so? 看来这是一个简单的问题,您认为呢?

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  

This works just as well, and is more efficient. 这同样有效,并且效率更高。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM