zoukankan      html  css  js  c++  java
  • Bat脚本之延时变量cmd /v:on

    延时环境变量作用即工作原理:

    ​ 当准备执行一条命令时,命令解释器会检查语句中是否有环境变量,如果有就会先将变量的值读取出来赋给变量,就像初始化,会将已知变量先赋值。这会导致语句中多次使用的某个环境变量的值都是一样的都是一个定值。

    ​ 延时环境变量,开启方式如下,使用!xx!包裹,不是%xx%,会在变量使用的时候才进行读值赋值,不会在一开始就赋值。

    举个例子:

    C:Users98483>set it=1
    C:Users98483>set /a it+=1 & echo %it%
    21
    C:Users98483>echo %it%
    2
    
    我们需要的输出是22 要加1,但是由于解释器会在开始的时候就给环境变量附上值,所以echo %it%没有加1,但是再单独执行echo %it% 会发现it=2了
    
    cmd /v  开启延时变量
    C:Users98483>cmd /v
    Microsoft Windows [版本 10.0.19042.928]
    (c) Microsoft Corporation。保留所有权利。
    
    C:Users98483>set /a it+=1 & echo %it%
    33
    
    1. cmd下开启/关闭延迟环境变量
    在cmd下开启或延迟环境变量用/v参数:
    cmd /v:on    //开启延迟环境变量 直接cmd /v 也可以
    cmd /v:off   //关闭延迟环境变量
    
    cmd 字符串也可以使用:
    cmd /v /c "set it=1 & set /a it+=1 & echo !it!"
    

    1. 批处理中开启/关闭延迟环境变量
    在批处理中开启或关闭延迟环境变量用setlocal命令:
    setlocal EnableDelayedExpansion    //开启延迟环境变量
    setlocal DisableDelayedExpansion   //关闭延迟环境变量
    
  • 相关阅读:
    Foundation与Core Foundation内存管理基本原则简述
    Quartz2D 图像处理
    XCode中的特殊快捷键图标
    UITableView的编辑模式
    Cocoa框架中的内存分区
    Cocoa 框架为什么采用两阶段的方式来创建对象?
    IOS中的内存不足警告处理(译)
    Caching和Purgeable Memory (译)
    3年后,我回来了
    POJ3632 Optimal Parking
  • 原文地址:https://www.cnblogs.com/forforever/p/14906582.html
Copyright © 2011-2022 走看看