Я пытаюсь получить доступ к параметру, переданному функции, с использованием переменной . Я знаю другие способы сделать это, например, используя команду 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
Расширение '%' параметра происходит перед ''! Расширения переменной, так что ваш код не может работать. npocmaka имеет хорошее решение. – dbenham