SETLOCAL: 开始批文件中环境更改的本地化。


... "SETLOCAL" 摘自 Microsoft Windows 帮助
... 命令"SETLOCAL"的示例
... 重要信息,"SETLOCAL"命令的提示

命令: "SETLOCAL" 开启 Windows 11, 10, .. 可用

"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命令提示符中的命令用于在批处理文件中本地设置环境变量。以下是一些如何使用的示例`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"命令的提示

是的,当您`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`谨慎并成对使用,以确保环境变量得到正确限制并达到预期效果。


Deutsch
English
Español
Français
Italiano
日本語 (Nihongo)
한국어 (Hangugeo)
汉语 (Hànyǔ)
Türkçe
Português
Português
Svenska
Norsk
Dansk
Suomi
Nederlands
Polski









Windows-10


... Windows 10 FAQ
... Windows 10 How To


Windows 10 How To


... Windows 11 How To
... Windows 10 FAQ



指挥 SETLOCAL - 开始批文件中环境更改的本地化。

HTTP: ... console/cn/059.htm
0.124
17135

Can I delete Autocomplete entries, strings, text entered by mistake or no longer wanted?

I would love to see the full name of the directory on the tab instead of "..."!

Hide the title bar and menu, move the window by dragging the background!

Why at Copy Paste actions show the selection menu on Windows?

Wann Unicode-Version und wann Ansi-Version?

Wie kann ich die Desktop Pixel Abfrage Software loswerden auf Windows 11, 10, ...?



(0)