批处理文件中有两种类型的变量。 其中一个参数是在调用批处理文件时可以传递的参数,另一个是通过set
命令完成的。
批处理脚本支持命令行参数的概念,其中参数可以在被调用时传递给批处理文件。参数可以通过变量%1
,%2
,%3
等从批处理文件中调用。
以下示例显示了一个批处理文件,它接受3个命令行参数,并将它们回显到命令行屏幕。
@echo off echo %1 echo %2 echo %3
如果上面的批处理脚本存储在一个名为test.bat
的文件中,我们将运行该批处理 -
Test.bat 1 2 3
以下是批处理文件执行时在命令提示符下的外观截图。
以上命令产生以下输出。
1
如果要运行批处理 -
Example 1 2 3 4
输出仍然与上面一样。 但是,第四个参数将被忽略。
变量可以被初始化的另一种方式是通过“set”
命令。 以下是set
命令的语法。
语法
set /A variable-name=value
其中 -
以下示例显示了可以使用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
在任何编程语言中,都有一个选项可以将变量标记为具有某种范围,即可以访问它们的代码部分。 通常情况下,具有全局作用域的变量可以从程序中的任何地方访问,而局部作用域变量则有一个可以访问的定义的边界。
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
注意:命令echo %var%
不会产生任何东西,因为在ENDLOCAL
语句之后,'var'
变量将不再存在。
如果有跨批处理文件使用的变量,那么最好使用环境变量。 当定义了环境变量,就可以通过%
符号来访问它。 以下示例显示如何查看系统上定义的JAVA_HOME
。 JAVA_HOME
变量是各种应用程序通常使用的关键组件。
@echo off echo %JAVA_HOME%
输出将显示从系统到系统的JAVA_HOME
目录。 以下是一个输出的例子。
C:\Users\Administrator>echo %JAVA_HOME% D:\Program Files\Java\jdk1.8.0_65