setlocal(设置本地环境)

开始在批处理文件中本地化环境变量。 本地化将一直持续到遇到匹配的 endlocal 命令或到达批处理文件的末尾。

语法

setlocal [enableextensions | disableextensions] [enabledelayedexpansion | disabledelayedexpansion]

参数

参数 说明
启用扩展 启用命令扩展,直到遇到匹配的 endlocal 命令,而不考虑运行 setlocal 命令之前的设置。
disable扩展 禁用命令扩展,直到遇到匹配的 endlocal 命令,而不考虑运行 setlocal 命令之前的设置。
enabledelayedexpansion 启用延迟环境变量扩展,直到遇到匹配的 endlocal 命令,而不考虑运行 setlocal 命令之前的设置。
disableDelayed扩展 禁用延迟的环境变量扩展,直到遇到匹配的 endlocal 命令,而不考虑运行 setlocal 命令之前的设置。
/? 在命令提示符下显示帮助。

注解

  • 如果在脚本或批处理文件外部使用 setlocal,则不起作用。

  • 运行批处理文件时,使用 setlocal 更改环境变量。 运行 setlocal 后所做的环境更改是批处理文件的本地更改。 Cmd.exe 程序在遇到 endlocal 命令或到达批处理文件的末尾时还原以前的设置。

  • 可以在批处理程序中具有多个 setlocalendlocal 命令(即嵌套命令)。

  • 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