位置: 编程技术 - 正文

批处理中setlocal enabledelayedexpansion的作用详细整理(批处理中for语句的哪个参数表示目录)

编辑:rootadmin
为了更好的说明问题,我们先引入一个例子。例1: 结果:4 解说:为什么是4而不是5呢?在echo之前明明已经把变量a的值改成5了?让我们先了解一下批处理运行命令的机制:批处理读取命令时是按行读取的(另外例如for命令等,其后用一对圆括号闭合的所有语句也当作一行),在处理之前要完成必要的预处理工作,这其中就包括对该行命令中的变量赋值。我们现在分析一下例1,批处理在运行到这句“set a=5&echo %a%”之前,先把这一句整句读取并做了预处理——对变量a赋了值,那么%a%当然就是4了!(没有为什么,批处理就是这样做的。)而为了能够感知环境变量的动态变化,批处理设计了变量延迟。简单来说,在读取了一条完整的语句之后,不立即对该行的变量赋值,而会在某个单条语句执行之前再进行赋值,也就是说“延迟”了对变量的赋值。那么如何开启变量延迟呢?变量延迟又需要注意什么呢? 举个例子说明一下: 例2: 结果:5 解说:由于启动了变量延迟,得到了正确答案。变量延迟的启动语句是“setlocalenabledelayedexpansion”,并且变量要用一对叹号“!!”括起来(注意要用英文的叹号),否则就没有变量延迟的效果。分析一下例2,首先“setlocalenabledelayedexpansion”开启变量延迟,然后“set a=4”先给变量a赋值为4,“set a=5&echo !a!”这句是给变量a赋值为5并输出(由于启动了变量延迟,所以批处理能够感知到动态变化,即不是先给该行变量赋值,而是在运行过程中给变量赋值,因此此时a的值就是5了)。再举一个例子巩固一下。 例3: 结果: 解说:本例开启了变量延迟并用“!!”将变量扩起来,因此得到我们预期的结果。如果不用变量延迟会出现什么结果呢?结果是这样的:ECHO 处于关闭状态。ECHO 处于关闭状态。ECHO 处于关闭状态。ECHO 处于关闭状态。ECHO 处于关闭状态。即没有感知到for语句中的动态变化。 batman的说明 我来简要说一下吧: set:设置 local:本地(环境变量) enable:能够 delayed:延迟 expansion:扩展 setlocal enabledelayedexpansion就是扩展本地环境变量延迟, 比较下面两段代码: 第一段代码只会显示行“ECHO 处于关闭状态。”,而第二段代码则会正确显示1-的行数字。这是为什么呢?因为在两段代码的for循环前str都是没有被定义的,而由于第一段代码没有开启变量延迟,所以str值一直是没有定义,因而显示出了行报 错信息;而第二段代码开启了变量延迟,在for循环中每次赋予str的值被传递下去,因而会正确显示行数字,但这里的str变量符必须要写成!str!,这是没有道理可讲的,只要记住就好了。 setlocal enabledelayedexpansion 是什么意思? 是:设置本地为延迟扩展。其实也就是:延迟变量,全称"延迟环境变量扩展", 在cmd执行命令前会对脚本进行预处理,其中有一个过程是变量识别过程,在这个过程中,如果有两个%括起来的如%value%类似这样的变量,就会对其进行识别,并且查找这个变量对应的值,再而将值替换掉这个变量,这个替换值的过程,就叫做变量扩展,然后再执行命令。 在解释之前,先看几个例子的区别: 例一: set value=kkkkkkk echo %value% 将这段代码保存到一个后缀为bat的文本文件中。然后打开dos,进到对应目录下,执行这个文件,结果如下: C:Documents and SettingsAdministrator桌面lntempbat>set value=kkkkkkk C:Documents and SettingsAdministrator桌面lntempbat>echo kkkkkkk kkkkkkk 最后一行是结果,但是在结果之前,还有两句,set value=kkkkkkk 和 echo kkkkkkk,但是在语句中,我们并没有写echo kkkkkkk的语句,这表明至少在执行到echo %value% 这句时,对变量进行的值的替换。这就是变量的扩展。 那么什么是变量的延迟扩展呢? 如果大家知道C++的“静态变量”概念,那就应该知道,c++编译的时候,会对静态变量进行值的替换,但这个替换是基于静态的前提下,那么进行变量扩展时,也是这样,但如果出现动态的情况会怎样?在cmd执行中,发生动态的一种情况是在 for语句中进行变量赋值,例如: 例二: 执行这样的脚本,出现如下结果: _1 _2 _3 结果出现这三句话。_ 表示空格 注:k没有赋初值,则替换为空。 例三: 结果: yyy 1 yyy 2 yyy 3 注:k有赋初值,则都替换为yyy。、 实例四: 结果: 3 1 3 2 3 3 这里已经是用了延迟变量,为什么还会出现这种情况呢?再看实例五: 实例五: 结果: 1 1 2 2 3 3 原来在延迟变量扩展中,要使用!来引用变量。

推荐整理分享批处理中setlocal enabledelayedexpansion的作用详细整理(批处理中for语句的哪个参数表示目录),希望有所帮助,仅作参考,欢迎阅读内容。

批处理中setlocal enabledelayedexpansion的作用详细整理(批处理中for语句的哪个参数表示目录)

文章相关热门搜索词:批处理中@ECHO OFF的解决方法,批处理中仅有的语句是什么意思,批处理中@ECHO OFF的解决方法,批处理中是什么意思,批处理中@ECHO OFF的解决方法,批处理中调用另外一个批处理,批处理中for语句的哪个参数表示目录,批处理中for语句的哪个参数表示目录,内容如对您有帮助,希望把文章链接给更多的朋友!

百度贴吧上传图片方式附件利器 @echooff:start@echo.echo①请拖入图象文件回车echo(不推荐bmp格式,上传至网络相册后压缩包数据有可能损坏)set/pphoto=call:%photo%:clsif%~x1==.pnggoto1if%~x1==.PNG(

discuzX2全站自动备份批处理 @echooffecho开始备份本站重要数据!xcopy"D:webYUNSAFE.COMWWWROOT*.*""D:webYUNSAFE.COMBAKBakUp%date:~0,%WWWROOT"/i/qxcopy"D:webYUNSAFE.COMWWWROOTapi""D:webYUNSAFE.COMBAKBakU

使用批处理清除事件查看器所有Windows EventLog日志的代码 以前装完系统后要做个Ghost,为了达到完美,每次做Ghost前都会手动清除事件查看器所有WindowsEventLog日志。后来使用了Windowsr2/Win7后,这事变的复杂多

标签: 批处理中for语句的哪个参数表示目录

本文链接地址:https://www.jiuchutong.com/biancheng/376925.html 转载请保留说明!

上一篇:批处理删除自身的命令小结(批处理删除自身命令)

下一篇:百度贴吧上传图片方式附件利器(百度贴吧上传图片大小)

  • 固定资产报废进项税额怎么处理
  • 税收保全措施有金银首饰吗
  • 增值税即征即退怎么计算
  • 企业所得税上个月没有计提本月怎么计提
  • 劳务分包和劳务外包
  • 减税降费对企业的影响案例
  • 当月减少的固定资产当月停止折旧
  • 企业经营活动所需的资金的来源渠道有
  • 固定资产管理中存在的问题及对策论文
  • 长期股权投资的初始投资成本
  • 开立个人银行账户的条件
  • 进项发票还没认证怎么做账
  • 纳税申报成功
  • 公司投资另一个公司的投资款怎么入账
  • 去年的定额的发票可以报销吗?
  • 企业亏损情况下股东借款怎么办
  • 社保公积金会计分录怎么写
  • 简易征收电费能不能抵扣
  • 外地项目预缴个人所得税
  • 企业预缴多交税了如何申请退税
  • 纳税退税申请表的基本情况如何写
  • 支票收款
  • 资产损失税前扣除备查资料
  • 国际收款产生的手续费账务处理
  • 专项储备期末有余额吗
  • 医保退休必须交多少年辽阳
  • 金税盘的用户名
  • 预付卡发给员工如何入账
  • 购入土地建厂房要交的税
  • vue项目如何搭建
  • 没收到电费账单怎么办
  • 增值税税率简易征收
  • mac如何打电话
  • i9是多少纳米的芯片
  • PHP:Memcached::getByKey()的用法_Memcached类
  • 使用php进行mysql数据库编程的基本步骤
  • PHP:imageconvolution()的用法_GD库图像处理函数
  • 我国关税税则设有
  • 可变现净值属于资产计量属性吗
  • php操作文件的常用函数
  • 产品注册费会计科目
  • 其他债权投资减值可以转回吗
  • 阐述php的特点
  • 两借两贷属于复合会计分录吗
  • php二维数组添加数据
  • wordpress静态分离
  • 危废处理账务处理
  • ChatGPT全面升级,GPT4支持多模态数据。
  • 微软调整bing输入字数
  • php点运算符
  • php怎么获取post数据
  • 企业支付给其他单位劳务费时需要代扣代缴个税吗
  • 营业外支出贷方在利润表怎么体现
  • 常用的收集数据方法有
  • 代开运输发票会不会造成重复征税
  • 预付款为什么不扣质保金呢
  • 城市维护建设税怎么算
  • 房地产企业成本核算方法
  • 作业成本多用于直接成本的核算
  • 费用报销单怎样写记账凭证呢
  • 库存现金存入银行是什么凭证
  • 清理固定资产是什么意思
  • 住院发票能否用医保卡
  • 购买国家机关证件罪量刑标准
  • 固定资产盘点基本情况
  • 收派服务费可以简易计税吗
  • 旅游饮食服务企业会计核算的特点包括
  • linux系统 虚拟机
  • win7系统在电源选项找不到屏幕亮度
  • win7 64位系统使用360安全浏览器在网页中播放视频出现花屏的解决方法
  • windows升级后照片不见了
  • 纵向导航页面
  • bat定义函数
  • css网站布局实录
  • unity3d中用四元数 Quaternion来对一个坐标点进行旋转的初步体会
  • android开发前景
  • 职称申报密码找回
  • 国家个税app讨要工资流程怎么操作
  • 贵州网上税务大厅官网
  • 契税计税依据含装修费吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设