批处理文件未根据用户输入执行正确的IF语句

时间:2018-05-14 21:42:41

标签: batch-file variables if-statement user-input

每当我提供任何输入时,代码总是执行第一个IF语句中的任何代码。因此,如果我输入" console clear" ,它将执行" console help" 的代码。

:: USER INPUT
:user_input
SET /P _userInput = ">"
ECHO "%_userInput%"
GOTO :check_command

:: COMMANDS
:check_command
:: CONSOLE COMMANDS
IF /I "%_userInput%" EQU "console help" {
    GOTO :console_help
}
IF /I "%_userInput%" EQU "console clear" {
    GOTO :console_clear
}

1 个答案:

答案 0 :(得分:0)

试试吧!

REM USER INPUT
:user_input
SET /P "_userInput=>"
ECHO "%_userInput%"
GOTO :check_command

REM COMMANDS
:check_command
REM CONSOLE COMMANDS
IF /I "%_userInput%"=="console help" (
    GOTO :console_help
)

IF /I "%_userInput%"=="console clear" (
    GOTO :console_clear
)

您正在设置变量:
_userInput space
所以您必须使用:
ECHO "%_userInput %"

此外,您应该使用括号()而不是大括号,{}EQU更多地用于数字比较,仅使用==是更常见的用法。