2

Я просто пишу глупую небольшую программу, но проблема, которую я имею, кажется довольно общей.

Вот часть кода, которая вызывает у меня проблемы:

Предупреждение: код открывает поиск Google.

set /a c=0
:Longcat
CLS
Echo.
ECHO *****************************************************************
ECHO.
echo            How LONG is this cat?
echo.
echo *****************************************************************
Echo.
timeout 5 >nul
If %c%==0 start https://www.google.com/search?q=LongCat
set /a c=%c%+1
If %c%==10 goto incorrect
Set /p cat=
If %cat%==long goto correct
goto Longcat
:correct
Echo correct
pause
Goto geometric
:incorrect
echo incorrect
pause
goto geometric

Когда я вписываю односложные ответы для /p cat= , например, big или tall , программа работает нормально (продолжает GOTO LONGCAT).

Но как только я использую ответ из двух слов, например very big , я получаю сообщение об ошибке:

большой == долго был неожиданным в это время.

У кого-нибудь есть объяснение или исправление для этого?

1 ответ1

4

У кого-нибудь есть объяснение или исправление для этого?

If %cat%==long goto correct

Если вы введете very big то приведенная выше команда расширится до:

If very big==long goto correct

что является синтаксической ошибкой:

большой == долго был неожиданным в это время.

Вы должны добавить кавычки (" , чтобы ваш , if сравнение сравнить мульти входы слова:

If "%cat%"=="long" goto correct

Теперь, если вы введете very big значение, приведенная выше команда расширится до:

If "very big"=="long" goto correct

которая является действительной командой.


Дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .