在括号内移动参数
让我们有以下 example.bat
并用参数 1
,2
和 3
调用它:
@echo off
(
shift
shift
echo %1
)
由于变量扩展将在到达末端括号上下文后发生变化,因此输出将为:
1
因为当在括号内移动来访问参数时,这可能是一个问题,你需要使用调用:
@echo off
(
shift
shift
call echo %%1
)
现在输出将是 3
。使用 CALL
命令(这将导致额外的变量扩展)使用此技术,参数访问也可以参数化:
@echo off
set argument=1
shift
shift
call echo %%%argument%
延迟扩张:
@echo off
setlocal enableDelayedExpansion
set argument=1
shift
shift
call echo %%!argument!
输出将是
3