0

最後に関数定義を含むバッチ ファイルがあります。関数または定義自体への呼び出しに達するとエラーが返されるため、関数が問題であることは事実です。エラーが表示されます:the syntax of the command is incorrect.括弧のネストにエラーがないかチェックしましたが、役に立ちませんでした。Batchif definedでは、引数に対してステートメントを要求し、その内部で関数を呼び出すことができますか?

それ以外は、エラーを解決できないようです。

rem Functions.
:checkLvl
if "%~1" EQU "%~2" (
    set counter=0
    if defined %~3 echo %~3
    if defined %~4 echo 1: %~4 &&set counter=1
    if defined %~5 echo 2: %~5 &&set counter=2
    if defined %~6 echo 3: %~6 &&set counter=3
    if defined %~7 echo 4: %~7 &&set counter=4
    if defined %~4 ( 
        set /p checkChoice=
        if defined !checkChoice! ( 
            if !checkChoice! GTR 0 ( 
                if !checkChoice! LEQ !counter! ( 
                    set checkChoice=!checkChoice!
                ) else (
                    echo Enter a value below or equal to !counter! and greater than 0.
                    set checkChoice=null
                    call:checkLvl %~1 %~2 %~3 %~4 %~5 %~6 %~7
                ) 
            ) else (
                echo Enter a proper value.
                set checkChoice=null
                call:checkLvl %~1 %~2 %~3 %~4 %~5 %~6 %~7
            ) 
        ) else (
            echo Enter a value (1-!counter!).
            set checkChoice=null
            call:checkLvl %~1 %~2 %~3 %~4 %~5 %~6 %~7
        )
    )
    set returnCheck=true
) else ( set returnCheck=false )
goto:eof
4

1 に答える 1

2

バッチ パラメーターおよび for ループ変数で DEFINED を使用しないでください。を使用しif "%~1"==""ます。

于 2013-07-16T20:37:44.307 に答える