2016-11-19 69 views
-1

我不明白:/ 批处理很奇怪。 你能帮我搞定这项工作吗? 我得到的只是某个东西处于错误的位置。 我认为ifs中的括号是错误的。 我尝试多种组合,但没有工作:/批处理设置右括号

:init 
set ergebniss= 
set laufzeit= 
set zinssatz= 
set skapital= 
set i= 
set help= 

:input1 
if NOT (%1)==()(
    set /a skapital=%1 
    set /a zahl=%skapital% + 0 
    goto input2 
    if %zahl% neq %skapital% (
     cls 
     echo Ungueltiges Startkapital! 
     goto startkapital 
    ) 
) 

:startkapital 
cls 
echo Geben Sie ein Startkapital ein: 
set /p skapital= 
set /a zahl=%skapital% + 0 
if %zahl% neq %skapital% (
    cls 
    echo Ungueltiges Startkapital! 
    goto startkapital 
) 

:input2 
if NOT (%2)==() (
    set /a zinssatz=%2 
    set /a zahl=%zinssatz% + 0 
    goto input3 
    if %zahl% neq %zinssatz% (
     cls 
     echo Ungueltiger Zinssatz! 
     goto zinssatz 
    ) 
) 

:zinssatz 
pause 
cls 
echo Geben sie den Zinssatz ein: 
set /p zinssatz= 
set /a zahl=%zinssatz% + 0 
if %zahl% neq %zinssatz% (
    cls 
    echo Ungueltiger Zinssatz! 
    goto zinssatz 
) 

:input3 
if NOT (%3)==() (
    set /a laufzeit=%3 
    set /a zahl=%laufzeit% + 0 
    goto input3 
    if %zahl% neq %laufzeit% (
     cls 
     echo Ungueltige Laufzeit 
     goto laufzeit 
    ) 
) 

:laufzeit 
pause 
cls 
echo Geben sie eine Laufzeit ein: 
set /p laufzeit= 
set /a zahl=%laufzeit% + 0 
if %zahl% neq %laufzeit% (
    cls 
    echo Ungueltige Laufzeit 
    goto laufzeit 
) 

:berechne 
set ergebniss=%skapital% 
setlocal EnableDelayedExpansion 
for /L %%i in (1,1,%laufzeit%) do set /a ergebniss=!ergebniss!+!ergebniss!*%zinssatz%/100 

:ausgabe 
cls 
echo Das Kapital nach %laufzeit% Jahren ist %ergebniss% 

:wiederhole 
echo Wiederholen? [j/n]: 
set /p wh= 
if "%wh%"=="j" (
    cls 
    goto init) 

修改后的代码:

:init 
set ergebniss= 
set laufzeit= 
set zinssatz= 
set skapital= 
set i= 
set help= 
set zahl= 

:input1 
if NOT (%1)==() (
    set /a skapital=%1 
    set /a zahl=%skapital% + 0 
    if %zahl% neq %skapital% (
     cls 
     echo Ungueltiges Startkapital! 
     goto startkapital 
    ) 
    goto input2 
) 

:startkapital 
cls 
echo Geben Sie ein Startkapital ein: 
set /p skapital= 
set /a zahl=%skapital% + 0 
if %zahl% neq %skapital% (
    cls 
    echo Ungueltiges Startkapital! 
    goto startkapital 
) 

:input2 
if NOT (%2)==() (
    set /a zinssatz=%2 
    set /a zahl=%zinssatz% + 0 
    if %zahl% neq %zinssatz% (
     cls 
     echo Ungueltiger Zinssatz! 
     goto zinssatz 
    ) 
    goto input3 
) 

:zinssatz 
pause 
cls 
echo Geben sie den Zinssatz ein: 
set /p zinssatz= 
set /a zahl=%zinssatz% + 0 
if %zahl% neq %zinssatz% (
    cls 
    echo Ungueltiger Zinssatz! 
    goto zinssatz 
) 

:input3 
if NOT (%3)==() (
    set /a laufzeit=%3 
    set /a zahl=%laufzeit% + 0 
    if %zahl% neq %laufzeit% (
     cls 
     echo Ungueltige Laufzeit 
     goto laufzeit 
    ) 
    goto input3 
) 

:laufzeit 
pause 
cls 
echo Geben sie eine Laufzeit ein: 
set /p laufzeit= 
set /a zahl=%laufzeit% + 0 
if %zahl% neq %laufzeit% (
    cls 
    echo Ungueltige Laufzeit 
    goto laufzeit 
) 

:berechne 
set ergebniss=%skapital% 
setlocal EnableDelayedExpansion 
for /L %%i in (1,1,%laufzeit%) do set /a ergebniss=!ergebniss!+!ergebniss!*%zinssatz%/100 

:ausgabe 
cls 
echo Das Kapital nach %laufzeit% Jahren ist %ergebniss% 

:wiederhole 
echo Wiederholen? [j/n]: 
set /p wh= 
if "%wh%"=="j" (
    cls 
    goto init) 

解决方案:

:input1 
if (%1)==() goto startkapital 
set /a skapital=%1 
set /a zahl=%skapital% + 0 
if %zahl% neq %skapital% (
    cls 
    echo Ungueltiges Startkapital! 
    goto startkapital 
) 
goto input2 

回答

0
if NOT (%1)==()(

必须有一个空间,在此之前,最后括号,els Ë一批有没有告诉你的指令是if NOT "(%1)"=="()("if NOT "(%1)"=="()" (

(顺便说一句和,if "%1" neq "" (等同,更可靠)

:input1 
if NOT (%1)==() (
    set /a skapital=%1 
    set /a zahl=%skapital% + 0 
    goto input2 

这下面的代码不会是这样自执行以来执行已转移至:input2

if %zahl% neq %skapital% (

即使此代码执行,zahl在此处未定义。你需要,如果你一个代码block(代码parenthesised序列)内改变一个变量来了解delayed expansion

 cls 
     echo Ungueltiges Startkapital! 
     goto startkapital 
    ) 
) 

这个问题重复了,你下面的代码。

+0

嘿。谢谢你帮我一下。 –

+0

如果我写这样的代码::INPUT1 如果不是(%1)==()( \t集/一个skapital =%1 \t集/一个zahl =%skapital%+ 0 \t如果%zahl% NEQ%skapital%( \t \t CLS \t \t回声Ungueltiges startkapital! \t \t转到startkapital \t) \t转到输入2 )我得到 “(在这个时候意外” –

+0

您将需要'edit'这个代码加入你的问题作为补充n显示灵敏度tolayout并且不清楚linebreaks在哪里。 – Magoo