欢迎光临

木子屋

标题: 什么是延迟环境变量扩充

作者: dnawo

日期: 2008-04-28 12:30 AM

分类: 操作系统

内容: 我们先来看个例子：
复制内容到剪贴板 程序代码@echo off
set /a m=0,n=0
if %m%==0 (
set /a m=%m%+1
echo m=%m%
)
for %%i in (1 2 3 4 5) do set /a n=%n%+1
echo n=%n%
pause>nul
执行结果为：
复制内容到剪贴板 程序代码m=0
n=1
不是我们预期的：
复制内容到剪贴板 程序代码m=1
n=5
什么原因呢？因为在读到if/for语句时，if/for主体中的所有环境变量都先被扩充了(替换成他的值)，这就可以解释执行的结果了，那怎么才能得到我们预期的结果呢？延迟环境变量扩充即可：
复制内容到剪贴板 程序代码@echo off & setlocal enabledelayedexpansion
set /a m=0,n=0
if %m%==0 (
set /a m=!m!+1
echo m=!m!
)
for %%i in (1 2 3 4 5) do set /a n=!n!+1
echo n=%n%
pause>nul
注意：启用延迟环境变量扩充后，引用需要延迟扩充的环境变量不再是在名称两边加%，而是用!。

+ 查看当前日志评论 (1)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.531 ms

返回

标题: 什么是延迟环境变量扩充

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.531 ms

返回

标题: 什么是延迟环境变量扩充

评论内容:

== diy 2008-04-28 02:36 PM ----

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.033 ms

返回