【WINDOWS / DOS 批处理】setlocal命令、endlocal命令详解

【WINDOWS / DOS 批处理】setlocal命令、endlocal命令详解setlocal 命令 endlocal 命令用于开始 结束批处理文件中环境变量的本地化

大家好,欢迎来到IT知识分享网。

一、setlocal命令

命令格式

setlocal  [ enableExtensions | disableExtensions ] [ enableDelayedExpansion | disableDelayedExpansion ]

命令功能

setlocal 命令用于开始批处理文件中环境变量的本地化。本地化将持续到出现匹配的 endlocal 命令, 或者到达批处理文件结尾为止。

enableExtensions参数】 

 启用cmd.exe的命令扩展开特性。extension是“扩大,延伸”的意思

disableExtensions参数】 

 关闭cmd.exe的命令扩展特性。

【WINDOWS / DOS 批处理】setlocal命令、endlocal命令详解

enableDelayedExpansion参数】 

开启cmd.exe的变量延迟展开特性。expansion是“扩展,展开”的意思

disableDelayedExpansionn参数】 

关闭cmd.exe的变量延迟展开特性。 【WINDOWS / DOS 批处理】setlocal命令、endlocal命令详解

注意

  • enableExtensions参数、disableExtensions参数相比 cmd.exe的 /E参数,它们具有更高的优先级。
  • enableDelayedExpansion参数、 disableDelayedExpansion参数相比 cmd.exe的 /V参数,它们具有更高的优先级。

二、endlocal命令

命令格式:

endlocal 

命令功能:

endlocal 命令用于结束批处理文件中环境变量的本地化。

“环境变量本地化”的作用

在批处理文件中实现“环境变量本地化”,可以避免其对外部运行环境的“污染”

        示例

demo1.bat的内容如下:

::demo1.bat @echo off set var=200

demo2.bat的内容如下:

::demo2.bat @echo off setlocal set var=200 endlocal

         运行

C:\>set var=5 C:\>demo1 C:\out>echo %var% 200 C:\>set var=5 C:\>demo2 C:\>echo %var% 5 C:\>

总结

  • setlocal命令和endlocal命令在批处理文件中有效(在dos命令行环境中无效)
  • setlocal命令执行以前的所有变量状态(例如:变量值), 在endlocal命令(或者批处理文件)执行完后会被恢复
  • 在setlocal和endlocal(或者批处理文件的结尾处)之间,如果定义了新变量,在执行 endlocal命令后,该变量会被删除(即:其值为空)
  • 在setlocal和endlocal(或者批处理文件的结尾处)之间,可以正常使用setlocal命令执行以前的所有变量(包括外部dos命令行环境定义的变量)
  • 无参的setlocal命令和带参的setlocal命令(例如:setlocal enabledelayedexpansion)都遵守上述规则
  • 无参的setlocal命令只对变量所做的修改进行本地化,不会影响其作用域(setlocal和endlocal(或者批处理文件的结尾处)之间的局域空间)的命令扩展特性和变量延迟展开特性。
  • 编写批处理脚本时,为了不“污染”外部运行环境,同时对自己的运行环境进行“默认设置”,应该在批处理脚本中使用setlocal命令(和endlocal命令),下面是一个比较常用的“批处理脚本模板”
::demo.bat @echo off setlocal enableExtensions :: your code ... endlocal

写作不易,如果您觉得对您有用,请 “在下面一圈三连”

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/117366.html

(0)
上一篇 2025-11-21 17:26
下一篇 2025-11-21 17:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信