在括號內移動引數

讓我們有以下 example.bat 並用引數 123 呼叫它:

@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