设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 服务器 > 系统 > 正文

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

发布时间:2021-01-08 23:17 所属栏目:52 来源:网络整理
导读:什么是“变量扩张”?这仅仅意味着“变量定义”还是其他什么? 当我说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%"

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读