如何在for循环中更改变量的值

时间:2016-11-13 01:17:53

标签: batch-file cmd

@echo off
setlocal enabledelayedexpansion

if (%1)==(/?) (       
echo Hilfe zur Verwendung des Programms:
echo.Aufruf des Programms mit 3 Startwerten oder mit keinen Startwert.
echo.Dabei muss jeder Startwert eine Zahl groesser als 0 sein!
goto ende
)



if (%1) == () (
    echo.anfangskapital eingeben:
    set /p anfangskapital=
) else (
    set /a anfangskapital= %1

)

:checkAnfangskapital
    if %anfangskapital% LEQ 0 (
    echo Anfangskapital muss groesser 0 sein.
    set /p anfangskapital=
    goto checkAnfangskapital
)



if (%2) == () (
    echo.zinssatz eingeben:
    set /p zinssatz=

) else (
    set /a zinssatz = %2
)

:checkZinsatz
    if %zinssatz% LEQ 0 (
    echo Zinsatz muss groesser 0 sein.
    set /p zinssatz=
    goto checkZinsatz
)

if (%3) == () (
    echo.Anzahl Jahre eingeben:
    set /p jahre=

) else (
    set /a jahre = %3
)

:checkJahre
    if %jahre% LEQ 0 (
    echo Anzahl Jahre  muss groesser 0 sein.
    set /p jahre=
    goto checkJahre
)

FOR /L %%a IN (1,1,%jahre%) DO   set /a anfangskapital = !anfangskapital! *(1+(%zinssatz%/100)) 


 echo %anfangskapital% 

:ende
pause

anfangskapital的值始终相同,不会在for循环中更改其值。我不知道为什么。我尝试使用%%!!,但它没有改变任何内容。 如何更改anfanskapital的价值?

1 个答案:

答案 0 :(得分:0)

了解延迟扩张。

setlocal enabledelayedexpansion
set /a endkap=%anfangskapital%
FOR /L %%a IN (1,1,%jahre%) DO set /a endkap=!endkap! *(1+(%zinssatz%/100)) 
echo %endkap% REM 1000