2016-11-13 90 views
0
@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的值?如何更改for循環中變量的值

+0

除非您向我們展示您的所有代碼,否則無法爲您提供解決方案。 – Squashman

回答

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 
+0

不起作用:/。仍返回相同的值(1000)。 – igodie

+0

endkap不會更改,因爲zinssatz不會更改。發佈更多的代碼,顯示你在用zinssatz做什麼。我不確定你想要做什麼。 – soja

+0

當你的循環中zinssatz沒有改變時,你爲什麼期待afangskapital改變?你所做的只是運行相同的評估時間。你不指定你想要做什麼。但是你應該把'%% a'(你的循環迭代的值,在1和jahre之間)放到你的方程中。 – soja