开始在批处理文件中本地化环境变量。 本地化将一直持续到遇到匹配的 endlocal 命令或到达批处理文件的末尾。
语法
setlocal [enableextensions | disableextensions] [enabledelayedexpansion | disabledelayedexpansion]
参数
参数 | 说明 |
---|---|
启用扩展 | 启用命令扩展,直到遇到匹配的 endlocal 命令,而不考虑运行 setlocal 命令之前的设置。 |
disable扩展 | 禁用命令扩展,直到遇到匹配的 endlocal 命令,而不考虑运行 setlocal 命令之前的设置。 |
enabledelayedexpansion | 启用延迟环境变量扩展,直到遇到匹配的 endlocal 命令,而不考虑运行 setlocal 命令之前的设置。 |
disableDelayed扩展 | 禁用延迟的环境变量扩展,直到遇到匹配的 endlocal 命令,而不考虑运行 setlocal 命令之前的设置。 |
/? | 在命令提示符下显示帮助。 |
注解
如果在脚本或批处理文件外部使用 setlocal,则不起作用。
运行批处理文件时,使用 setlocal 更改环境变量。 运行 setlocal 后所做的环境更改是批处理文件的本地更改。 Cmd.exe 程序在遇到 endlocal 命令或到达批处理文件的末尾时还原以前的设置。
可以在批处理程序中具有多个 setlocal 或 endlocal 命令(即嵌套命令)。
setlocal 命令设置 ERRORLEVEL 变量。 如果传递 {enableextensions | disableextensions} 或 {enabledelayedexpansion | disabledelayedexpansion},则 ERRORLEVEL 变量设置为 0 (零)。 否则,它将设置为 1。 可以在批处理脚本中使用此信息来确定扩展是否可用,如以下示例所示:
verify other 2>nul setlocal enableextensions if errorlevel 1 echo Unable to enable extensions
由于 cmd 禁用命令扩展时不会设置 ERRORLEVEL 变量,因此 验证 命令在将 ERRORLEVEL 变量与无效参数一起使用时将 ERRORLEVEL 变量初始化为非零值。 此外,如果将 setlocal 命令与参数 {enableextensions | disableextensions} 或 {enabledelayedexpansion | disabledelayedexpansion} 使用,并且它不会将 ERRORLEVEL 变量设置为 1,则命令扩展不可用。
例子
若要本地化批处理文件中的环境变量,请遵循以下示例脚本:
rem *******Begin Comment**************
rem This program starts the superapp batch program on the network,
rem directs the output to a file, and displays the file
rem in Notepad.
rem *******End Comment**************
@echo off
setlocal
path=g:\programs\superapp;%path%
call superapp>c:\superapp.out
endlocal
start notepad c:\superapp.out