Следующий код должен выполнять вычисление разделения. Он должен попросить пользователя ввести первый номер, дождаться ввода, а затем повторить со вторым номером.Пакетный файл закрывается после нажатия пользователем.
(Некоторые дополнительные сведения: Пользователю не позволено войти в число 22 или 0)
До сих пор, после ввода первого номера он выходит на меня. Понятия не имею почему.
Любая помощь будет оценена!
@echo off
cls
:START
set /p FN = Enter first number:
if %FN% == 22 GOTO EXIT
GOTO SECONDNUMBER
:EXIT
exit /b
:SECONDNUMBER
set /p SN = Enter second number:
if "%SN%" == 22 exit /b
if "%SN%" == 0 GOTO ZEROERROR
GOTO DIVIDE
:ZEROERROR
echo Sorry! You CAN NOT divide by ZERO. Please enter a new number.
pause
cls
GOTO SECONDNUMBER
:DIVIDE
set /a RESULT = %FN%/%SN%
echo %FN% divided by %SN% = %RESULT%
pause
cls
GOTO START
'set/p SN = ...' устанавливает переменную с именем 'SN' + _space_. 'if"% SN% "== 22' сравнивает цитируемую строку с некотируемой и поэтому всегда терпит неудачу (кавычки являются частью сравнения); Чтобы решить эту проблему, укажите также правую часть («22»); цитируемый синтаксис устойчив к пустым строкам, но некорректный - нет. – aschipfl
Я думаю, что мы ответили на эту же проблему каждый день на этой неделе. То же самое с задержкой расширения. Вероятно, две наиболее распространенные ошибки с пакетными файлами, которые люди не понимают. – Squashman