2016-11-19 64 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