我的批处理文件最后有一个函数定义。我知道函数是一个问题,因为错误在它到达函数或定义本身的任何调用时返回。我收到错误:the syntax of the command is incorrect.
我已经检查过括号中的错误,但没有用。 Batch是否允许我向参数请求if 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
答案 0 :(得分:2)
不要将DEFINED用于批处理参数和循环变量。使用if "%~1"==""
。