Setlocal 开始批处理文件中环境变量的本地化。本地化将持续到出现匹配的 endlocal 命令或者到达批处理文件结尾为止。 语法 setlocal {enableextension | disableextensions} {enabledelayedexpansion | disabledelayedexpansion} 参数 enableextension 启用命令扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。 disableextensions 禁用命令扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。 enabledelayedexpansion 启用延迟的环境变量扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。 disabledelayedexpansion 禁用延迟的环境变量扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。 /? 在命令提示符显示帮助。 注释 使用 setlocal 当您在脚本或批处理文件外使用 setlocal 时,将没有效果。 更改环境变量 运行批处理文件时使用 setlocal 更改环境变量。运行 setlocal 后对环境所作的更改在批处理文件本地。Cmd.exe 在遇到 endlocal 命令或者到达批处理文件的结尾时将恢复上一次的设置。 在批处理程序中可以包含多个 setlocal 或 endlocal 命令(嵌套)。 测试批处理文件中的命令扩展 setlocal 命令设置 ERRORLEVEL 变量。如果遇到 {enableextension | disableextensions} 或 {enabledelayedexpansion | disabledelayedexpansion},ERRORLEVEL 变量将设置成 0 (0)。否则,该变量将被设置成 1 (1)。在批处理脚本中使用该命令可以确定扩展是否可用,例如: verify other 2>nul setlocal enableextensions if errorlevel 1 echo Unable to enable extensions 因为当禁用命令扩展时 cmd 不会设置 ERRORLEVEL 变量,所以当通过无效参数使用 setlocal 命令时 verify 命令将 ERRORLEVEL 变量初始化为非零值。另外,如果通过 {enableextension | disableextensions} 或 {enabledelayedexpansion | disabledelayedexpansion} 参数使用 setlocal 命令,而且没有将 ERRORLEVEL 变量设置成 1 (1) 时,则命令扩展将不可用。 有关启用或禁用命令扩展的详细信息,请参阅“”中的 cmd。 范例 可以在批处理文件中本地化环境变量,如下所示: 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 XOX