📜  批处理脚本 – 本地 VS 全局变量(1)

📅  最后修改于: 2023-12-03 15:39:43.519000             🧑  作者: Mango

批处理脚本 – 本地 VS 全局变量

批处理脚本中,变量可以分为两种,本地变量和全局变量。本地变量只在当前代码块中有效,而全局变量在脚本的整个生命周期中都有效。

本地变量

本地变量定义在代码块中,只在该代码块中有效。通常用于函数、循环等需要局部使用的场景。

定义本地变量使用set命令。例如:

@echo off
setlocal
set var=hello
echo %var%
endlocal

运行这段代码,输出hellosetlocal命令和endlocal命令之间的代码块中定义的变量是本地变量,执行完endlocal命令后就会被删除。

全局变量

全局变量定义在代码块外,整个脚本都可以访问到。通常用于不同的代码块需要共享变量的场景。

定义全局变量使用set命令,并加上/a参数,例如:

@echo off
set /a global_var=0
echo %global_var%
:loop
set /a global_var+=1
echo %global_var%
if %global_var% leq 10 goto loop_end
:loop_end

运行这段代码,会输出0 1 2 3 4 5 6 7 8 9 10set /a global_var=0定义了全局变量global_var,并将其初始值设为0。之后,在loop代码块中使用set /a命令修改了global_var的值,在loop_end代码块中退出循环。

需要注意的是,在定义全局变量时,需要在脚本的开头使用setlocal命令,以便在脚本结束后清除全局变量。例如:

@echo off
setlocal
set /a global_var=0
echo %global_var%
:loop
set /a global_var+=1
echo %global_var%
if %global_var% leq 10 goto loop_end
:loop_end
endlocal

返回的markdown格式如下所示:

# 批处理脚本 – 本地 VS 全局变量

批处理脚本中,变量可以分为两种,本地变量和全局变量。本地变量只在当前代码块中有效,而全局变量在脚本的整个生命周期中都有效。

## 本地变量

本地变量定义在代码块中,只在该代码块中有效。通常用于函数、循环等需要局部使用的场景。

定义本地变量使用`set`命令。例如:

@echo off setlocal set var=hello echo %var% endlocal


运行这段代码,输出`hello`。`setlocal`命令和`endlocal`命令之间的代码块中定义的变量是本地变量,执行完`endlocal`命令后就会被删除。

## 全局变量

全局变量定义在代码块外,整个脚本都可以访问到。通常用于不同的代码块需要共享变量的场景。

定义全局变量使用`set`命令,并加上`/a`参数,例如:

@echo off set /a global_var=0 echo %global_var% :loop set /a global_var+=1 echo %global_var% if %global_var% leq 10 goto loop_end :loop_end


运行这段代码,会输出`0 1 2 3 4 5 6 7 8 9 10`。`set /a global_var=0`定义了全局变量`global_var`,并将其初始值设为0。之后,在`loop`代码块中使用`set /a`命令修改了`global_var`的值,在`loop_end`代码块中退出循环。

需要注意的是,在定义全局变量时,需要在脚本的开头使用`setlocal`命令,以便在脚本结束后清除全局变量。例如:

@echo off setlocal set /a global_var=0 echo %global_var% :loop set /a global_var+=1 echo %global_var% if %global_var% leq 10 goto loop_end :loop_end endlocal