网站大量收购独家精品文档,联系QQ:2885784924

4.1 环境变量延迟扩展(上).pdfVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.1 环境变量延迟扩展(上).pdf

4.1 环境变量延迟扩展(上) 4.1 环境变量延迟扩展(上) 《批处理⼊门⼿册》 四. 环境变量延迟扩展(上) 4 .1 学习环境变量延迟扩展 学习要点: ⼀、什么是延迟环境变量扩展? ⼆、批处理变量延迟 解 ⼀,什么是延迟环境变量扩展? 原⽂地址:http://bbs.bathome .cn/thread-3083-1-1.html 延迟变量全称延迟环境变量扩展,要理解这个东西,我们还得先理解⼀下什么叫变量 扩展! CM 在解释我们的命令的时候,⾸先会读取⼀条完整的命令,然后对其进⾏⼀些命令格 式的匹配操作,看你所输⼊的 命令格式是不是符合它的要求.如果我们要在命令中引⽤⼀些变量,那么我们如何让 CM 在解释我们的命令时,能识别 出这个变量呢?这时我们就可以在变量名字两边加⼀个%号,如%name%.当CM 在读取 我们的整条命令进⾏格式匹配的时 候,就会发现name这个字符两边加了%号,就不会把它当作普通字符处理,⽽是会把它当 作⼀个变量处理,变量名叫name 然后CM 就会找到变量名对应的值,⽤该值替换掉这个变量名字(name),(如果变量名 不存在值,就返回空值) .再将这 个替换好并且匹配的命令执⾏!这个替换值的过程,就叫做变量扩展,说⽩了就是把变量 的名字,⽤它的值给替换掉后 执⾏!也就是批处理如何识别⼀个变量的过程.(注意:这⾥只是变量的扩展的意思,不是 延迟环境变量扩展,要理解延 迟环境变量扩展,必须先理解什么是变量的扩展) 也就是批处理如何识别⼀个变量的过 程. 例1, @echo off set var=test echo %var% pause CM 在读取到echo %var%这句命令后,就会进⾏匹配操作,它马上就发现var字符两边 有%号,这时CM 就会把它当作⼀ 个变量处理,查看这个var变量名是不是有值,如果有就⽤该值把变量名var给替换掉,这⾥ 我们的var在上⼀条命令set var=test 中,给var赋值为test ,所以CM 会⽤test把%var%这个变量名替换掉,替换后的结 果就为echo test 了.这些步 骤都是CM 进⾏匹配操作的步骤,匹配完后,他再执⾏echo test这条语句,这时我们的 CM 中就会echo出⼀个test 了. 什么是环境变量扩展知道了,那什么是延迟环境变量扩展呢? 在理解环境变量扩展时,我们知道CM 在解释命令时,⾸先会把⼀条完整的命令进⾏读 取,然后进⾏匹配操作,匹配时 它会把命令⾥的变量⽤变量的值给替换掉,然后执⾏这个替换好的命令.问题就出在⼀ 条完整的命令,在BAT 中,IF FOR这样的命令都可以加括号,将⼀些命令嵌套在⾥⾯执⾏.这样的话对于⼀条可以加 扩号嵌其他命令的命令,他的完 整格式就是for %%i in ()这样⼀个整体.此时,如果我们如果在括号⾥⾯嵌⼊⼀些设置 变量值的命令,就会出现 问题了! 例2 , @echo off for /l %%i in (1,1,5) do ( set var=%%i echo %var% ) pause 执⾏后会显⽰5个空⾏的错误提⽰!为什么?根据我们上⾯说的知识来理解。 通过这两个例⼦,⼤家应该已经理解,如果只有环境变量扩展这个过程的话,如果我们在 可以嵌套命令的命令中执⾏ 赋值操作时,会让我们的BAT出现给变量赋值的问题.那么这个时候延迟环境变量扩 展,这个概念就被提出来了。 在批处理中,我们可以⽤setloacl enabledelayedexpansion 这个命令来启⽤延迟环境变 量扩展 ,在我们启⽤ 了延迟环境变量扩展后,当CM 在解释含有嵌套格式的命令时,他会把嵌套的命令⼀ 条⼀条的先执⾏⼀次,然后再进 ⾏匹配操作,这样我们的赋值操作就会完成.并且在延迟环境变量扩展启⽤后,CM 会 ⽤!号来判断这是不是⼀个变量 。如没启⽤前变量⽤%name%这样的格式判断,启⽤后就⽤!name !这样的格式判断了,这 个符号我们需要注意! 例3 , @echo off setlocal enabledelayedexpansion set var= 1 for /l

文档评论(0)

zhoujiahao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档