批处理中tlocal enabledelayedexpansion的含义

更新时间:2023-08-10 21:53:14 阅读: 评论:0

批处理中tlocal enabledelayedexpansion的含义.txt会计说:“你晚点来领工资吧,我这没零钱。”你看得出我擦了粉吗?虽然你身上喷了古龙水,但我还是能隐约闻到一股人渣味儿。既宅又腐,前途未卜。既宅又腐,前途未卜。你被打胎后是怎么从垃圾桶里逃出来的?史上最神秘的部门:有关部门。不可否认,马赛克是这个世纪阻碍人类裸体艺术进步最大的障碍!橡皮英文
批处理中tlocal enabledelayedexpansion的含义
批处理中tlocal enabledelayedexpansion的含义 
                                             
tlocal enabledelayedexpansion
        延迟变量全称"延迟环境变量扩展",要理解这个东西,我们还得先理解一下什么叫扩展
        CMD在解释我们的命令的时候,首先会读取命令行一条完整的命令,然后对其进行一些命令格式的匹配操作,看你所输入的命令格式是不是符合他的要求
      如果我们要在我们的命令中引用一些变量,那么我们如何让CMD在解释我们的命令时,能识别出这个变量呢?这时我们就可以在变量名字两边加一个%上级,%name%.CMD在对读取我们的整行
命令进行格式匹配的时候,就会发现name这个字符两边加了%,就不会把他当作普通字符处理,
而是会把他当作一个变量处理,变量名叫name!然后CMD怎样才能快速美白就会找到变量名对应的值,用变量名的值替换掉这个变量名字(name),(如果变量名不存在 ,就返回空值).再将这个替换好并且匹配的命令执行!这个替换值的过程,就叫做变量扩展,说白了就是把变量的名字,用他的值给替换掉后执行!也就是批处 理如何识别一个变量的过程
      (注意:这里只是变量的扩展的意思,不是延迟环境变量扩展,要理解延迟环境变量扩展,必须先理解什么是变量的扩展) 也就是批处理如何识别一个变量的过程. ~_~ 
例如这个一个BAT
t var=test
echo %var% 
      CMD在读取到echo %var%这句命令后,就会进行匹配操作,它马上就发现var字符两边有%,这时他就会把他当作一个变量处理,查看这个var变量名是不是有值,如果有 就用他的值把变量名var给替换掉,这里我们的VAR在上一条命令t var=test,var赋值为test,所以他会用test%var%这个变量名替换掉,替换后的结果就为echo test.这些步骤都是CMD进行匹配操作的步骤,匹配完后,他再执行echo test这条语句,这时我们的CMD中就会echo出一个test
      什么是环境变量扩展知道了,那什么是延迟环境变量扩展呢
coldcall
      在理解环境变量扩展时,我们知道CMD在解释命令时,首先会把一条完整的命令进行读取,然后进行匹配操作,匹配时他会把命令里的变量用变量的值个替换掉,然后执行这个替换好的命令.
问题就出在"一条完整的命令",BAT,IF FOR这样的命令都可以加括号,将一些命令嵌套在里面执行.这样的话对于一条可以加扩号嵌其他命令的命令,他的完整格式就是
for %%i in (....)这样一个整体.此时,如果我们如果在括号里面嵌入一些设置变量值的命令,就会出现问题了
看例子
@echo off
for /l %%i in (1,1,5) do (
      t var=%%i
      echo %var%
按理说执行结果应该是
1
2
3
4
5
但执行后却显示5个空行的错误提示!为什么?根据我们上面说的知识来理解 
@echo off
t var=test
for /l %%i in (1,1,5) do (
      t var=%%i
      echo %var%
这个就会打印5uneptest了,说明 for /l %%i in (1,1,5) 没有起作用。
 
      通过这两个例子,大家因该已经理解,如果只有环境变量扩展这个过程的话,如果我们在可以嵌套命令的命令中执行赋值操作时,会让我们的BAT出现给变量赋值的问题.
mrgong那么这个时候"pressing延迟环境变量扩展",这个概念就被提出来了 
      在批处理中,信息化项目管理我们可以用tloacl ENABLEDELAYEDEXPANSIONfreezing这个命令来启用"延迟环境变量扩展
      在我们启用了"延迟环境变量扩展",CMD在解释涵有嵌套格式的命令时,他会把嵌套的命令一条一条的先执行一 ,然后再进行匹配操作,这样我们的赋值操作就会完成.并且再"延迟环境变量扩展"启用后,CMD会用!号来判断这是不是一个变量,如没启用来变量 %name%这样的格式判断,启用后就用!name!这样的格式判断了,这个符号我们需要注意
例子
@echo off
tlocal ENABLEDELAYEDEXPANSION
t var=test
for /l %%i in (1,1,5) do (
      t var=%%i
      echo !var! 2010年专八真题
执行结果应该是
1
2
3
4
5
这样大家因该明白什么是延迟环境变量扩展了吧
再来一个例子 
@echo off
t var=test & echo %test%
pau 
这条命令放在一行,表示他是一条完整的命令,不启用"延迟环境变量扩展",就会出现上面的赋值错误
改成这样
@echo off
tlocal ENABLEDELAYEDEXPANSION
t var=test & echo !var!
pau 
很容易理解了吧
Powered by 无名小鬼 wumingxiaogui. 

本文发布于:2023-08-10 21:53:14,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/193245.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:命令   变量   扩展
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图