当要执行括在括号中的复合语句时,该语句首先从左括号一直解析到匹配的右括号。
此时,any%var%
将替换为在它被解析时var
来自环境的值(即它的PARSE-TIME值。)
那么如果该语句看起来有效,它就会被执行。
访问变量的RUN-TIME值有三种常用方法(例如,在FOR
循环执行时)。
1/SETLOCAL ENABLEDELAYEDEXPANSION
切换到 !var! 可用于访问var
2/的运行时值,以从 3/ 的运行时值CALL set var2=%%var%%
设置 的值
执行子程序,内部或外部,其中
将是运行时值。var2
var
%var%
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%i IN (1 2 3) DO (
ECHO START of run %%i
ECHO using ^!time^! : !time! - PARSE TIME was %time%
CALL ECHO using CALL %%%%TIME%%%% : %%TIME%%
CALL :report
timeout /t 5
ECHO using ^!time^! : !time!
CALL ECHO using CALL %%%%TIME%%%% : %%TIME%%
CALL :report
ECHO END of run %%i
ECHO.
)
GOTO :eof
:report
ECHO :report says TIME is %TIME%
GOTO :eof
需要注意的几点:
该指令
IF ERRORLEVEL n 回显错误级别为 n 或更大
ALWAYS解释 RUN-TIME 值ERRORLEVEL
IF SET VAR
ALWAYS解释 RUN-TIME 值VAR
magic variables
永远不应该设置 ERRORLEVEL 和 TIME 。如果你执行
设置错误级别=哑
thenERRORLEVEL
将采用该值dumb
,因为环境中的当前值优先于系统分配的值。