2014-09-21 2 views
1

Я пытаюсь получить доступ к параметру, переданному функции, с использованием переменной . Я знаю другие способы сделать это, например, используя команду SHIFT, , но в этом случае я пробую это так. Я подумал, используя команду «setlocal enabledelayedexpansion», которую я мог бы сделать, потому что она разрешала переменную, к которой можно получить доступ, используя восклицательные знаки вокруг нее, а не проценты знаков. Это строка из скрипта ниже, что не работает:Использование переменных для доступа к параметрам командного файла Windows

set parm_value=%!parm_nr! 

Я думал, что это приведет к чему-то вроде этого:

set parm_value=%1 

, но вместо этого, он в результате:

set parm_value=1 

Кто-нибудь знает, возможен ли этот тип синтаксиса? Ниже приведен скрипт , демонстрирующий проблему. Все, кроме одного, работает правильно. Заранее спасибо.

:BOJ 
     echo off 
     setlocal enabledelayedexpansion 
     cls 
     echo. 

     call :EXAMPLE_1 parm_1.1 parm_1.2 parm_1.3 

     goto :EOJ 

    :EXAMPLE_1 
     set nr_parms=0 
     for %%x in (%*) do set /A nr_parms+=1 

     set parm_nr=1 

    :EXAMPLE_1_LOOP 
     if %parm_nr% GTR %nr_parms% goto :EXAMPLE_1_END 

     set parm_value=%!parm_nr! 
     echo Parameter #%parm_nr% : %parm_value% 
     set /A parm_nr+=1 
     goto :EXAMPLE_1_LOOP 

    :EXAMPLE_1_END 
     echo. 
     exit /B 0 

    :EOJ 
     pause 
+0

Расширение '%' параметра происходит перед ''! Расширения переменной, так что ваш код не может работать. npocmaka имеет хорошее решение. – dbenham

ответ

1

попробовать с

call set parm_value=%%!parm_nr! 
+0

+1, я слегка удивлен, что это работает! – dbenham

+0

Я пробовал это (и 3 двойные кавычки, и 4 двойные кавычки, и комбинации, которые включали двойные кавычки после последнего восклицательного знака), но в результате это было буквальное «% 1», находящееся в parm_value, а не фактическое значение параметра. – user3289835

+0

@ user3289835 - Я не понимаю, что вы пробовали, что не удалось. Решение для меня отлично справилось. – dbenham

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