50 было неожиданным в это время

#windows #batch-file

#Windows #пакетный файл

Вопрос:

Мой код находится в пакетном файле.

Ошибка:

введите свой возраст: 22
50 было неожиданным в это время.

 @echo off
set /p age = "enter your age:"
if %age% leq 50 ( 
    if %age% geq 20 (
        echo "You are %age% years old in the 21st century."
            ) else (
                echo "You are not in range."
) else (
    echo "You are not in range."
)
pause
  

Комментарии:

1. Не ставьте пробелы по обе стороны от символа equals в команде set.

2. Вы также неправильно установили скобки.

3. Пакет распознает пробел, появляющийся перед = , как допустимый символ имени переменной, поэтому вы присваиваете свой ввод переменной с именем «age», а не «age» Переменная age не определена и, следовательно, команда if %age% leq 50 ( интерпретируется как if leq 50 ( поскольку %age% , будучи неопределенной, заменяется на ничто ). Затем пакет видит, что leq в качестве первого аргумента, подлежащего сравнению, а ( второй со сравнением находится 50 там, где он ожидает == , equ , neq ‘lss , 'leq , ‘gtr` или geq поэтому он сообщает об ошибке.

Ответ №1:

Вот исправленная версия вашего скрипта. Возникли две проблемы

  • Как упоминалось Squashman, удалите пробелы в команде set
  • Дисбаланс в круглых скобках

 @echo off
set /p age="enter your age:"
if %age% leq 50 ( 
    if %age% geq 20 (
        echo "You are %age% years old in the 21st century."
    ) else (
        echo "You are not in range."
    ) 
) else (
    echo "You are not in range."
)
pause