Page 1 of 1

Missing operator???

Posted: 15 Apr 2012 08:46
by tinfanide

Code: Select all

@ECHO ON

SET base=3
SET power=3

FOR /L %%A IN (1,1,%power%) DO CALL :Count %%A
PAUSE
GOTO :EOF

:Count index
SET /A times=%1-1
IF NOT %times%==0 (
   CALL :ToPower %base% %times%
   SET /A skip=10-%n%
   ECHO %skip%

)
PAUSE
GOTO :EOF

:ToPower
SET n=1
FOR /L %%C IN (1,1,%2) DO SET /A n*=%1
GOTO :EOF

PAUSE


C:\test>SET base=3

C:\test>SET power=3

C:\test>FOR /L %A IN (1 1 3) DO CALL :Count %A

C:\test>CALL :Count 1

C:\test>SET /A times=1-1

C:\test>IF NOT 0 == 0 (
CALL :ToPower 3 0
SET /A skip=10-!n!
ECHO
)

C:\test>GOTO :EOF

C:\test>CALL :Count 2

C:\test>SET /A times=2-1

C:\test>IF NOT 1 == 0 (
CALL :ToPower 3 1
SET /A skip=10-!n!
ECHO
)

C:\test>SETLOCAL ENABLEDELAYEDEXPANSION

C:\test>SET n=1

C:\test>FOR /L %C IN (1 1 1) DO SET /A n*=3

C:\test>SET /A n*=3

C:\test>GOTO :EOF
Missing operator.
ECHO is on.

C:\test>GOTO :EOF

C:\test>CALL :Count 3

C:\test>SET /A times=3-1

C:\test>IF NOT 2 == 0 (
CALL :ToPower 3 2
SET /A skip=10-!n!
ECHO 9
)

C:\test>SETLOCAL ENABLEDELAYEDEXPANSION

C:\test>SET n=1

C:\test>FOR /L %C IN (1 1 2) DO SET /A n*=3

C:\test>SET /A n*=3

C:\test>SET /A n*=3

C:\test>GOTO :EOF
Missing operator.
9

C:\test>GOTO :EOF

C:\test>ENDLOCAL

C:\test>PAUSE
Press any key to continue . . .


Simple maths. But just don't know why it causes errors.
Please help!

Re: Missing operator???

Posted: 15 Apr 2012 08:51
by tinfanide
Thanks to aGerman in the previous post.
SETLOCAL ENABLEDELAYEDEXPANSION does expand the run-time variable, if the wordings are correct technically.

Code: Select all

@ECHO ON
SETLOCAL ENABLEDELAYEDEXPANSION

SET base=3
SET power=3

FOR /L %%A IN (1,1,%power%) DO CALL :Count %%A
ENDLOCAL
PAUSE
GOTO :EOF

:Count index
SET /A times=%1-1

IF NOT %times%==0 (
   CALL :ToPower %base% %times%
   SET /A skip=10-!n!
   ECHO !skip!

)

GOTO :EOF

:ToPower

SET n=1
FOR /L %%C IN (1,1,%2) DO SET /A n*=%1

GOTO :EOF

Re: Missing operator???

Posted: 15 Apr 2012 22:49
by Cat
Is this just trying to do exponents? Either try "exit /b" for "GOTO :EOF" or:

Code: Select all

@echo off
set base=3
set mult=%base%
set power=3
for /l %%a in (2,1,%power%) do set /a mult*=%base%
echo %mult%
pause

Both ideas untested, though.

Re: Missing operator???

Posted: 16 Apr 2012 05:23
by tinfanide
Cat wrote:Is this just trying to do exponents? Either try "exit /b" for "GOTO :EOF" or:

Code: Select all

@echo off
set base=3
set mult=%base%
set power=3
for /l %%a in (2,1,%power%) do set /a mult*=%base%
echo %mult%
pause

Both ideas untested, though.


Yes, tested. It works. Thank you.
Based on your script that makes me simplify it, here's mine:

Code: Select all

@echo off
set base=3
set power=3
Set /A init=%power%-1
for /l %%a in (%init%,1,%power%) do set /a base*=%base%
echo %base%
pause