2013-07-16 3 views
0

У меня есть пакетный файл с определением функции в конце. Я знаю, что функция является проблемой, потому что ошибка возвращается, когда она достигает любого вызова функции или самого определения. Я получаю сообщение об ошибке: the syntax of the command is incorrect. Я проверил гнезда круглых скобок на наличие ошибок, но безрезультатно. Может ли пакет разрешить мне запрашивать 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

Что вы пытаетесь выполнить с помощью этой функции? Знание вашей цели поможет нам понять ваш код. Также вы передаете имена переменных для параметров? Причина, о которой я прошу, состоит в том, что команда 'defined' может только проверять, определена ли переменная, а не параметр. –

+0

@ DavidRuhmann Цель состоит в том, чтобы проверить, равна ли любая предоставленная переменная другому предоставленному, и, таким образом, отбросить все переменные после этого, затем пользователь выбирает один из вариантов, выбранных из эхо-сигналов. – cygorx

ответ

2

Не используйте ОПРЕДЕЛЕННЫЕ параметры партии и переменные цикла. Используйте if "%~1"=="".

Смежные вопросы