批处理脚本 - 变量



批处理文件中有两种类型的变量。一种是参数,可以在调用批处理文件时传递;另一种是通过set命令设置。

命令行参数

批处理脚本支持命令行参数的概念,即在调用批处理文件时可以向其传递参数。这些参数可以通过变量%1、%2、%3等等在批处理文件中调用。

以下示例显示一个批处理文件,它接受3个命令行参数并将它们回显到命令行屏幕。

@echo off 
echo %1 
echo %2 
echo %3

如果上述批处理脚本存储在一个名为test.bat的文件中,我们运行批处理命令如下:

Test.bat 1 2 3

以下是批处理文件执行时在命令提示符中显示的屏幕截图。

Command Line Arguments

上述命令产生以下输出。

1 
2 
3

如果我们运行批处理命令如下:

Example 1 2 3 4

输出将与上面相同。但是,第四个参数将被忽略。

Set命令

初始化变量的另一种方法是使用“set”命令。以下是set命令的语法。

语法

set /A 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%
  • 我们首先将两个变量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
广告