批处理延迟扩展的作用,举例两段代码分别使用和不使用造成的不同结果
时间: 2023-12-03 16:47:42 浏览: 36
批处理延迟扩展是一种机制,用于在批处理命令中传递参数和变量值。它可以通过使用“!”来替代“%”符号来实现。当启用延迟扩展时,批处理文件中的所有变量都以叹号“!”符号来表示,而不是百分号“%”符号。
以下是一个使用批处理延迟扩展的示例代码:
```
@echo off
setlocal enabledelayedexpansion
set var=abc
echo %var%
echo !var!
set var=def
echo %var%
echo !var!
endlocal
```
输出结果为:
```
abc
abc
def
def
```
在这个示例中,我们使用了`setlocal enabledelayedexpansion`来启用延迟扩展。然后我们定义了一个变量`var`并赋值为`abc`。通过`echo %var%`和`echo !var!`,我们可以看到使用`%`符号时输出的是`abc`,而使用`!`符号时输出的也是`abc`。这是因为在启用延迟扩展后,`!var!`会被解释为当前`var`变量的值,而不是一开始定义时的值。
以下是一个不使用批处理延迟扩展的示例代码:
```
@echo off
set var=abc
echo %var%
echo %var%
set var=def
echo %var%
echo %var%
```
输出结果为:
```
abc
abc
def
def
```
在这个示例中,我们没有启用延迟扩展。虽然我们定义了两个不同的值`abc`和`def`,但是使用`%`符号时输出的值始终为初始定义时的值。因此,我们看到的输出结果是一样的。