`
DoubleEO
  • 浏览: 158161 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于setlocal的一些总结

F# 
阅读更多
命令 setlocal (开启本地变量)  endlocal (结束本地变量)
一般都一起配合使用
它可以使你的代码更简洁,易读,且不容易出错。

举例:
假设你在批处理的开头部分有这么一句  set var=123,那么在批处理结束以前,变量 var 的值就永远是 123,除非你 运行了  set "var=" 来把它的值清空。或 set var=别的什么 把它的值改变,否则它的值永远是123,当写某些代码时,需要把变量的值累加,如: set var=%var%567 此时var的值就是123567,但当某段代码需要重复运行时,我们有时、甚至是经常需要var的值回到原始的值,即:123。你可能会说这还不好办,一句就ok 了 set var=123,不错,确实是这样,但如果我们需要将一大堆的变量都会回到原始值呢?
比如: var num a b c d e f .........
你难道要
set var=
set num=
set a=
set b=
........
........
这样吗?
有了setlocal 和 endlocal 就不用这么麻烦了。看代码
@echo off
set var=123
set num=4456
set a=ham
setlocal
set var=abcd
set num=jkl
set a=efg
set max=1234567
到了这一步,我想不用echo你应该也都知道,这三个变量的值改变了,
并且还给一个新的变量赋了值 max,对于不熟悉setlocal 和 endlocal 命令的朋友来说,要想让这三个变量回到开始的值,可能就只有回到开头那三句去了,其实不用。一句就可以了,看下面的
endlocal
echo %var% %num% %a%
echo %max%
pause
看到区别了吗?
不错,setlocal 和 endlocal 这两句中间的命令给所有的变量赋的值都消失了,就好像从没有运行过它们一样。运行 setlocal 以前变量的值是什么 在运行 endlocal 以后,又回到了什么。如果之前是空值,即:没有赋值。
  批处理运行时会开辟一块地方给变量,我们可以把它想像为一块黑板,你可以在黑板上任意写字,在批处理中这种写字,就是给变量赋值或清空或改变变量的值如:set var=123  set num=   set /a str+=1 set var=%var% %num% 等等之类的。而 setlocal 命令就是在黑板中又划出一块方块来,你在这之后所写的字就全在这个方块中,
(当然这个方块的容量、大小不会有什么限制,你或者把他理解为在这个黑板上又覆盖了一块同样大小的新的黑板,更为恰当。当然这个黑板的容量大小应该要减去你在原来那块黑板上所写的内容,这个就不在这里讨论了,知道个大概就行。)当运行 endlocal (结束变量)后,相当于把你在原来那块黑板上划的方块擦掉了,连内容一起擦掉了。又或者说,把这个新的黑板拿走了,你在这个新黑板上写的字也都没有了,回到你面前的又是原来的那块黑板,当然你以前写在上面的字仍然还在。它不会擦掉你的,也不会自动给你写些新东西上去。也就是 原来的变量还是原来的值,原来没有赋值的,仍然是空值。不管你在那块新黑板上写过什么,都过去了,就象什么也没发生过一样。

当新黑板上的内容与老黑板上的内容发生冲突时,则以新黑板上的内容为准,若老黑板上的内容没与新黑板的内容冲突时,老黑板上的内容在新黑板中仍然有效。
在提一句,新黑板最多只能连续覆盖32块,否则就会提示 “以达到最大递归层”的错误信息。所谓 “连续覆盖”就是运行了 setlocal 而没有运行 endlocal 的情况。
分享到:
评论

相关推荐

    vim自定义主题

    **五、总结** 通过自定义`vimrc`文件,我们可以打造出一个符合个人习惯且高效舒适的Vim环境。对于C++开发,合理配置颜色主题、代码高亮、缩进规则以及安装相关插件,能显著提升开发效率。不断探索和调整Vim配置,...

    关于延时的p处理程序,很好看

    根据上述分析,我们可以总结出以下关键知识点: 1. **变量处理**:使用`set`命令来管理和更新变量,包括变量初始化、清空和动态赋值。 2. **循环结构**:利用`for /l`循环来实现重复执行某些操作,例如计数、遍历...

    DOS编程教程

    #### 三、总结 本教程涵盖了DOS编程中常用的几个命令,包括`TYPE`、`SETLOCAL`、`POPD`与`PUSHD`、`PROMPT`、`PATH`、`MORE`和`GOTO`等。通过这些命令的学习和实践,可以更好地理解和掌握DOS编程的基本概念和技术。...

    批量清除SVN或VSS工具

    总结来说,批量清除SVN或VSS文件是一项涉及版本控制元数据清理的任务,可以使用自定义的批处理脚本或者专用工具来完成。在执行清理前,确保了解操作后果,并备份重要数据,以防万一。同时,根据团队的协作需求,适时...

    清除svn上残留的隐藏文件-boss级别的

    在使用版本控制系统Subversion(简称SVN)进行代码管理时,有时会遇到一些遗留的隐藏文件,例如`.svn`目录。这些文件是SVN用来跟踪和管理版本信息的关键部分,但在某些情况下,如误操作或者清理工作目录时,可能会...

    批量删除指定子文件夹的DOS命令

    以上示例中,使用了DOS批处理语言中的一些基本语法,包括但不限于条件判断 (`if`)、循环控制 (`for /l`) 和用户输入 (`set /p`)。 1. **条件判断**:`if` 命令用于基于某个条件决定是否执行后续命令。例如,这里的 ...

    BAT批处理脚本-文本操作-显示某两个字符及其之间的字符.cmd.zip

    总结来说,"显示某两个字符及其之间的字符.cmd.txt"是一个批处理脚本,它利用DOS命令进行文本操作,找出并显示指定字符之间的内容。理解并运用这种脚本技巧,能帮助我们在日常工作中提升效率,实现文本处理的自动化...

    windows运行jar包和开机自动启动.docx

    本文总结了在 Windows 平台上运行 JAR 包和开机自动启动的多种方法,包括使用.bat 文件、后台运行、使用 jps 命令查看进程、使用 TASKKILL 命令终止进程等。这些方法可以帮助开发者更方便地在 Windows 平台上运行 ...

    批量改名(批处理编)

    总结来说,批量改名批处理是一种高效的方法,尤其适用于整理大量文件时。通过编写简单的批处理脚本,我们可以实现自定义的文件重命名规则,极大地提高了工作效率。在实践中,掌握批处理语言的基本语法和命令,可以...

    笔记本电脑共享wifi网络批处理

    总结来说,通过批处理文件,我们可以方便地在笔记本电脑上实现WiFi网络的自动化管理,提高工作效率,减少手动操作的繁琐。对于不熟悉命令行的用户,这种方式也能提供一种简单易用的工具,理解并掌握批处理技巧,对...

    使用for语句在屏幕上画一个五角星_happyxt3_使用for语句在屏幕上画一个五角星_

    总结来说,"使用for语句在屏幕上画一个五角星"是一个经典的编程练习,它涉及到循环控制、条件判断和字符输出等基本概念。通过实践这样的例子,初学者可以加深对这些基础知识的理解,为后续的编程学习打下坚实的基础...

    bat传递超过10个参数的情况

    总结来说,批处理脚本处理超过10个参数有两种常见方法:一是使用`for`循环结合`%*`通配符,可以一次性处理所有参数,但无法直接访问特定位置的参数;二是结合`shift`命令和计数,可以访问特定位置的参数,但代码会...

    批处理更新配置文件标记

    总结: 批处理更新配置文件标记是Windows自动化管理的重要技巧,通过编写简单的批处理脚本,可以高效、准确地修改ini文件中的特定标记,尤其适用于需要频繁修改相同设置的情况。熟练掌握这项技术,可以极大地提高...

    批处理教程精解【技术文档】

    - `SETLOCAL` 和 变量延迟: `SETLOCAL`开启局部变量,`ENDLOCAL`结束局部变量,变量延迟允许在批处理内部动态改变变量。 二、批处理命令实例 一个简单的批处理文件示例: ```batch @echo off echo "欢迎来到非常 ...

    BAT批处理脚本-网络相关操作-查看用户是否存在.bat.zip

    总结,"查看用户是否存在.bat.zip"包含了一个用于检查Windows系统中用户账户是否存在的批处理脚本,使用了`net user`命令并结合条件语句实现自动化判断。批处理脚本在IT领域中广泛应用于系统管理、自动化任务和日常...

    获取当前目录下的目录名称并生成目录树

    总结来说,"获取当前目录下的目录名称并生成目录树" 在DOS环境下主要涉及`dir`命令的使用以及批处理脚本的编写。通过理解这些基本命令和脚本编写技巧,我们可以有效地管理文件系统,并生成直观的目录结构。在实际...

    DOS批处理ftp下载文件

    这个示例就是关于如何通过DOS批处理实现这一功能。 首先,我们需要了解DOS批处理的基本结构。批处理文件本质上是文本文件,扩展名为`.bat`,其中包含了若干行命令,这些命令会按照它们在文件中的顺序依次执行。例如...

    关于批处理文件的写法

    总结,批处理文件是Windows系统中一种强大的自动化工具,通过编写简单的脚本即可实现日常任务的自动化,节省时间,提高效率。理解并熟练掌握批处理文件的写法,对于日常的系统管理和软件开发都大有裨益。通过不断...

Global site tag (gtag.js) - Google Analytics