命令: "SETLOCAL" 开启 Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. 可用
命令"SETLOCAL"的示例
这
`SETLOCAL`Windows命令提示符中的命令用于在批处理文件中本地设置环境变量。以下是一些如何使用的示例
`SETLOCAL`:
示例1:设置本地环境变量:
@ECHO OFF
SETLOCAL
SET 当地的_VARIABLE=内容
ECHO %当地的_VARIABLE%
说明:本例中,环境变量
`当地的_VARIABLE`在当地有限的区域内(通过
`SETLOCAL`和
`ENDLOCAL`)且只能在此范围内使用。
示例 2:重置为之前的状态:
@ECHO OFF
SET GLOBALE_VARIABLE=全局内容
SETLOCAL
SET 当地的_VARIABLE=本地内容
ECHO 当地的 Variable: %当地的_VARIABLE%
ECHO Globale Variable: %GLOBALE_VARIABLE%
ENDLOCAL
ECHO 当地的 Variable (超出当地限制区域): %当地的_VARIABLE%
说明:这是本地环境变量
`当地的_VARIABLE`在当地限定的区域内设置和使用。后
`ENDLOCAL`脚本返回到之前的状态,并且局部变量在局部范围之外不再可用。
示例 3:嵌套 SETLOCAL:
@ECHO OFF
SETLOCAL
SET VARIABLE1=价值1
ECHO 内区: %VARIABLE1%
SETLOCAL
SET VARIABLE2=价值2
ECHO 外部区域: %VARIABLE1%, %VARIABLE2%
ENDLOCAL
ECHO 本地区域之外: %VARIABLE1%, %VARIABLE2%
描述:这是
`SETLOCAL`-命令嵌套两次。变量
`VARIABLE2`仅在内部局部区域可见,而
`VARIABLE1`在外部和内部区域都可见。
示例 4:启用高级环境变量处理:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=内容
ECHO 延误前 Expansion: %VARIABLE%
SET VARIABLE=新内容
ECHO 延误后 Expansion: !VARIABLE!
描述:通过使用
`ENABLEDELAYEDEXPANSION`环境变量可以带感叹号吗
`!`而不是百分号
`%`用于延迟扩展。
这
`SETLOCAL`环境允许在本地为批处理文件设置变量,使更改仅应用于有限区域,而不是全局应用于整个脚本。如果您希望将环境变量的更改限制在脚本的特定部分内,这尤其有用。
"SETLOCAL" 摘自 Microsoft Windows 帮助
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\WINDOWS>
开始批处理文件中环境改动的本地化操作。在执行 SETLOCAL 之后
所做的环境改动只限于批处理文件。要还原原先的设置,必须执
行 ENDLOCAL。达到批处理文件结尾时,对于该批处理文件的每个
尚未执行的 SETLOCAL 命令,都会有一个隐含的 ENDLOCAL 被执行。
SETLOCAL
如果命令扩展名被启用,SETLOCAL 会如下改变:
SETLOCAL 批命令现在可以接受可选参数:
ENABLEEXTENSIONS / DISABLEEXTENSIONS
启动或停用命令处理器扩展名。详细信息,请参阅 CMD /?。
ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
启动或停用延缓环境变量扩展名。详细信息,请
参阅 SET /? 。
无论在 SETLOCAL 命令之前它们的设置是什么,这些修改会一直
保留到匹配的 ENDLOCAL 命令。
如果有一个参数,SETLOCAL 命令将设置 ERRORLEVEL 的值。
如果有两个有效参数中的一个,该值则为零。用下列技巧,您
可以在批脚本中使用这个来决定扩展名是否可用:
VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo Unable to enable extensions
这个方法之所以有效,是因为在 CMD.EXE 的旧版本上,SETLOCAL
不设置 ERRORLEVEL 值。具有不正确参数的 VERIFY 命令将
ERRORLEVEL 值初始化成非零值。
重要信息,"SETLOCAL"命令的提示
是的,当您
`SETLOCAL`Windows 命令提示符或批处理脚本中的命令:
1.
范围有限: `SETLOCAL`创建环境变量的有限范围。在此范围内更改环境变量不会影响全局环境或其他本地范围。注意
`SETLOCAL`和
`ENDLOCAL`应成对使用。
SETLOCAL
REM ... 这里环境变量的更改是本地的
ENDLOCAL
2.
嵌套:你可以
`SETLOCAL`嵌套以创建多个局部区域。每个人
`SETLOCAL`但应该搭配一个合适的
`ENDLOCAL`被终止。
SETLOCAL
REM 内部局部区域
SETLOCAL
REM 更深的局部区域
ENDLOCAL
ENDLOCAL
3.
延迟扩展:您可以使用
`SETLOCAL ENABLEDELAYEDEXPANSION`激活延迟扩展。变量已包含在内
`!`代替
`%`封闭的。延迟扩展允许在运行时评估变量,而不仅仅是在读取批处理文件时。
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=内容
ECHO 延误前 Expansion: %VARIABLE%
SET VARIABLE=新内容
ECHO 延误后 Expansion: !VARIABLE!
ENDLOCAL
4.
全局环境变量:对某个环境变量的更改
`SETLOCAL`-scope 不影响作用域外的全局环境变量。
SET GLOBAL=全局内容
SETLOCAL
SET GLOBAL=本地内容
ECHO 在当地限定的区域内: %GLOBAL%
ENDLOCAL
ECHO 本地区域之外: %GLOBAL%
5.
撤消更改:如果要撤消局部区域的更改,只需恢复到之前的状态即可
`SETLOCAL`回到你身边
`ENDLOCAL`使用。
SETLOCAL
REM 此处更改
ENDLOCAL
REM 撤消更改
这很重要,
`SETLOCAL`和
`ENDLOCAL`谨慎并成对使用,以确保环境变量得到正确限制并达到预期效果。