批处理命令 / 延迟环境变量扩展

@echo offset var=50
echo %var%

变量扩展完之后,实际显示的命令为

echo 50

 

2、延迟环境变量扩展

         上述操作对于 echo 等其他单行指令是有效的,但是对于嵌套指令来说就有问题,如下栗所示:

@echo offfor %%i in (1,1,3) do (
set var=%%i
echo %var%
)

结果如下所示:

       原因是 Bat 解释器将整个 for 语句当做一条完整的指令,进行变量扩展时,会将 “set var=%%i” 变为 “set var=”,因为 for 语句之前,i 变量并没有赋值,所示只能给 var 赋值为空。最后的 “echo %var%” 就变为 “echo   ”,那么只能显示 echo 的开关状态了。

       为了解决上述问题,Bat 增加了延时环境变量扩展的功能,该功能的作用就是延时变量扩展,先将 for 语句中各个指令执行一遍,再进行变量扩展,从而实现了代码结果的正常化。

       增加延时环境变量的指令为:

setlocal enabledelayedexpansion……endlocal

       两条指令之间的命令中,变量用 “!” 包起来来表示。

 

(SAW:Game Over!)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部