пакетная программа продолжает выдавать мне ошибки «пропущенный операнд» - PullRequest
0 голосов
/ 17 октября 2018

когда я запускаю код, который должен делить два числа и выдавать вывод, или завершаться при использовании числа 66;это говорит мне, что у меня пропущены операнды?

@Echo off
setlocal enableextensions enabledelayedexpansion
FOR /L %%x in (1, 0, 10) DO (
Set /p "num1=Enter num1: "
if "%num1%" == "66" (
GOTO EOF
)

Set /P "num2=Enter num2: "

set /a "sum4=%num1% / %num2%"
echo result: !sum4!

if "%num2%" == "0" (
  echo Number not valid, 0 entered
) 
IF NOT "%num2%" == "0" (
  set /a "sum5=%num1% / %num2%"
  echo result: !sum5!
)
)
pause
:EOF
cls
echo Program has ended

1 Ответ

0 голосов
/ 17 октября 2018

попробуйте вот так (я использую ту же логику, что и вы):

@Echo off
setlocal enableextensions enabledelayedexpansion
FOR /L %%x in (1, 0, 10) DO (
    Set /p "num1=Enter num1: "
    if "!num1!" == "66" (
        call :END
    )

    Set /P "num2=Enter num2: "

    set /a "sum4=!num1! / !num2!"
    echo result: !sum4!

    if "!num2!" == "0" (
      echo Number not valid, 0 entered
    ) 
    IF NOT "!num2!" == "0" (
      set /a "sum5=!num1! / !num2!"
      echo result: !sum5!
    )
)
pause
exit /b
:END
cmd /k & exit

не так просто выйти из бесконечного цикла FOR /L, поэтому здесь я использовал команду выхода, и яначинаю новый процесс cmd в той же консоли.Может быть, есть лучший способ.

Причиной ошибки отсутствующего операнда было то, что вы не использовали ! для переменной exapnsion везде, где это необходимо (несмотря на то, что вы активировали отложенное расширение)

...