Search code examples
windowsbatch-filecmd

Batch missing operand errpr


I wrote the following batch script, but keep getting a missing operator error

   set /a control=1
   
   goto :while

   :while
   if "!control!"=="1" (
   set /p FirstNumber=Please enter your first number: 
   
   set /p SecondNumber=Please enter your Second number: 
   
   set /a result=%FirstNumber%/%SecondNumber%
   
   echo %FirstNumber% divided by %SecondNumber% = %result%
   
   echo %FirstNumber% divided by %SecondNumber% = %result% >> results.txt

   goto :while
   
   )
   
   

   pause

When I run this code, I keep getting a missing operand error. This is my output:

Please enter your first number 1: 10 Please enter your second number 1: 2 Missing operand. divided by =


Solution

  • setlocal enabledelayedexpansion when setting and using a variabled inside a code block:

    @echo off
    setlocal enabledelayedexpansion
    set /a control=1
    :while
    if !control! equ  1 (
       set /p FirstNumber=Please enter your first number: 
       set /p SecondNumber=Please enter your Second number: 
       set /a result=FirstNumber / SecondNumber
       echo !FirstNumber! divided by !SecondNumber! = !result! 
       echo !FirstNumber! divided by !SecondNumber! = !result!
       goto :while
     )
    

    and without needing the parenthesized code block and obviously no need for delayedexpansion

    @echo off
    set /a control=1
    :while
    if not %control% equ 1 goto :eof
    set /p FirstNumber=Please enter your first number: 
    set /p SecondNumber=Please enter your Second number: 
    set /a result=FirstNumber / SecondNumber
    echo %FirstNumber% divided by %SecondNumber% = %result% 
    echo %FirstNumber% divided by %SecondNumber% = %result%
    goto :while