📅  最后修改于: 2020-11-22 17:47:49             🧑  作者: Mango
批处理文件中有两种类型的变量。一种是用于在调用批处理文件时传递的参数,另一种是通过set命令进行传递的参数。
批处理脚本支持命令行参数的概念,其中可以在调用参数时将参数传递给批处理文件。可以通过批处理文件中的变量%1,%2,%3等调用自变量。
以下示例显示了一个批处理文件,该文件接受3个命令行参数并将其回显到命令行屏幕。
@echo off
echo %1
echo %2
echo %3
如果上述批处理脚本存储在名为test.bat的文件中,我们将以
Test.bat 1 2 3
以下是执行批处理文件时在命令提示符下的外观的屏幕截图。
上面的命令产生以下输出。
1
2
3
如果我们将批处理运行为
Example 1 2 3 4
输出将仍然与上面相同。但是,第四个参数将被忽略。
初始化变量的另一种方法是通过“ set”命令。以下是set命令的语法。
set /A variable-name=value
哪里,
variable-name是要设置的变量的名称。
value是需要针对变量设置的值。
/ A –如果值本质上需要为数字,则使用此开关。
以下示例显示了可以使用set命令的一种简单方法。
@echo off
set message=Hello World
echo %message%
在上面的代码片段中,定义了一个名为message的变量,并将其设置为“ Hello World”的值。
要显示变量的值,请注意,变量需要用%符号括起来。
上面的命令产生以下输出。
Hello World
在批处理脚本中,还可以定义一个变量来保存数值。这可以通过使用/ A开关来完成。
下面的代码显示了一种简单的方法,可以使用/ A开关设置数值。
@echo off
SET /A a = 5
SET /A b = 10
SET /A c = %a% + %b%
echo %c%
我们首先将2个变量a和b的值分别设置为5和10。
我们将这些值相加并存储在变量c中。
最后,我们显示变量c的值。
以上程序的输出为15。
所有算术运算运算符都在批处理文件中工作。以下示例显示了可在批处理文件中使用的算术运算运算符。
@echo off
SET /A a = 5
SET /A b = 10
SET /A c = %a% + %b%
echo %c%
SET /A c = %a% - %b%
echo %c%
SET /A c = %b% / %a%
echo %c%
SET /A c = %b% * %a%
echo %c%
上面的命令产生以下输出。
15
-5
2
50
在任何编程语言中,都可以选择将变量标记为具有某种范围,即可以在其上访问变量的代码段。通常,可以从程序的任何位置访问具有全局范围的变量,而局部范围的变量具有定义的边界,可以在其中访问它们。
DOS脚本还为本地和全局范围的变量定义。默认情况下,变量是整个命令提示符会话的全局变量。调用SETLOCAL命令以使变量在脚本范围内是本地的。调用SETLOCAL之后,所有变量分配都会在调用ENDLOCAL,调用EXIT或执行到达脚本中文件尾(EOF)时恢复。以下示例显示了在脚本中设置局部变量和全局变量时的区别。
@echo off
set globalvar = 5
SETLOCAL
set var = 13145
set /A var = %var% + 5
echo %var%
echo %globalvar%
ENDLOCAL
关于上述程序,需要注意的一些关键事项。
“ globalvar”是使用全局范围定义的,并且在整个脚本中都可用。
“ var”变量在本地范围内定义,因为它包含在“ SETLOCAL”和“ ENDLOCAL”块之间。因此,一旦执行“ ENDLOCAL”语句,此变量将被销毁。
上面的命令产生以下输出。
13150
5
您会注意到命令echo%var%将不会产生任何结果,因为在ENDLOCAL语句之后,“ var”变量将不再存在。
如果您有将在批处理文件中使用的变量,那么始终最好使用环境变量。定义环境变量后,可以通过%符号对其进行访问。以下示例显示如何查看系统上定义的JAVA_HOME。 JAVA_HOME变量是各种应用程序通常使用的关键组件。
@echo off
echo %JAVA_HOME%
输出将显示JAVA_HOME目录,该目录取决于系统。以下是输出示例。
C:\Atlassian\Bitbucket\4.0.1\jre