Пакетный файл не выполняет правильный оператор IF на основе ввода пользователя - PullRequest
0 голосов
/ 15 мая 2018

Всякий раз, когда я даю какой-либо ввод, код всегда выполняет любой код внутри первого оператора 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 голосов
/ 15 мая 2018

Попробуйте вместо этого!

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 пробел
, поэтому вам пришлось бы использовать:
ECHO "%_userInput %"

Кроме того, вы должны были использовать круглые скобки (), а не фигурные скобки, {} и EQU больше используются для числовых сравнений, просто использование == является более распространенным.

...