批处理脚本 – 变量

批处理脚本 – 变量


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

命令行参数

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

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

&commatecho 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 命令的简单方法。

例子

&commatecho off 
set message=Hello World 
echo %message%
  • 在上面的代码片段中,定义了一个名为 message 的变量,并将其值设置为“Hello World”。

  • 要显示变量的值,请注意变量需要用 % 符号括起来。

输出

上述命令产生以下输出。

Hello World

使用数值

在批处理脚本中,还可以定义一个变量来保存数值。这可以通过使用 /A 开关来完成。

下面的代码显示了一种可以使用 /A 开关设置数值的简单方法。

&commatecho off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% &plus %b% 
echo %c%
  • 我们首先将 2 个变量 a 和 b 的值分别设置为 5 和 10。

  • 我们将这些值相加并存储在变量 c 中。

  • 最后,我们显示变量 c 的值。

上述程序的输出将是 15。

所有算术运算符都在批处理文件中工作。以下示例显示了可以在批处理文件中使用的算术运算符。

&commatecho off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% &plus %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) 时恢复。以下示例显示了在脚本中设置局部变量和全局变量时的区别。

例子

&commatecho 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 变量是一个关键组件,通常被各种应用程序使用。

&commatecho off 
echo %JAVA_HOME%

输出将显示 JAVA_HOME 目录,该目录取决于系统。以下是一个输出示例。

C:\Atlassian\Bitbucket.0.1\jre

觉得文章有用?

点个广告表达一下你的爱意吧 !😁