设为首页 - 加入收藏 PHP编程网 - 黄冈站长网 (http://www.0713zz.com)-创业,推广,IT,移动互联,VR,5G,小程序,站长网!
热搜: 学习 vivo 华为 网站
当前位置: 首页 > 服务器 > 系统 > 正文

变量 – Windows批处理文件:什么是变量扩展,EnableDelayedExpan

发布时间:2021-01-09 08:14 所属栏目:[系统] 来源:网络整理
导读:什么是“变量扩张”?这仅仅意味着“变量定义”还是其他什么? 当我说setLocal EnableDelayedExpansion时会发生什么?谷歌不清楚. 解决方法 变量扩展意味着替换%或中包含的变量!以它的价值. 在执行一行之前,%normal%扩展只发生一次.这意味着%变量%扩

什么是“变量扩张”?这仅仅意味着“变量定义”还是其他什么?

当我说setLocal EnableDelayedExpansion时会发生什么?谷歌不清楚.

解决方法

>变量扩展意味着替换%或中包含的变量!以它的价值.
>在执行一行之前,%normal%扩展只发生一次.这意味着%变量%扩展具有相同的值无关紧要,如果该行被执行多次(如在for命令中).
>!延迟了!每次执行该行时都会执行扩展.

看这个例子:

@echo off
setlocal EnableDelayedExpansion
set "var=Original"
set "var=New" & echo Normal: "%var%",Delayed: "!var!"

输出:

Normal: "Original",Delayed: "New"

另一个:

@echo off
setlocal EnableDelayedExpansion
set "var1=Normal"
set "var2=Delayed"
for /L %%i in (1,1,10) do (
   set "var1=%var1% %%i"
   set "var2=!var2! %%i"
)
echo Normal:  "%var1%"
echo Delayed: "%var2%"

输出:

Normal:  "Normal 10"
Delayed: "Delayed 1 2 3 4 5 6 7 8 9 10"

正常扩张不一定是劣势,但取决于它所使用的具体情况.例如,在任何其他编程语言中,要交换两个变量的值,您需要第三个的帮助,但在批处理中,它可以只在一行中完成:

set "var1=%var2%" & set "var2=%var1%"

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章