#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