我正试图使用变量访问传递给函数的参数名称我知道其他方法可以做到这一点,比如使用SHIFT命令,但在这种情况下,我正在尝试这种方式。我想通过使用"setlocalenabledelayedexpansion"命令我可以这样做,因为它允许要使用感叹号而不是百分比访问的变量标志。这是下面脚本中不起作用的一行:
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
尝试
call set parm_value=%%!parm_nr!