第一个决策语句是if
语句。 批处理脚本中if
语句的一般形式如下所示 -
if(condition) do_something
本声明的一般工作是首先在if
语句中评估一个条件。如果条件为真,则执行语句。 下图显示了if
语句的流程。
检查变量
批处理脚本中'if'
语句的常见用法之一是检查在批处理脚本中设置的变量。 字符串和数字都可以对if
语句进行评估。
检查整型变量
以下示例显示如何将“if”
语句用于数字。
@echo off
SET /A a=5
SET /A b=10
SET /A c=%a% + %b%
if %c%==15 echo "The value of variable c is 15"
if %c%==10 echo "The value of variable c is 10"
关于上述程序有两点需要说明 -
- 第一个
“if”
语句检查变量c
的值是否为15
。如果是这样,那么它将回显一个字符串到命令提示符。 - 由于语句中的条件 - 如果
if %c% == 10
则打印变量c
的值为10
,但评估结果为false
,所以此语句的echo
部分将不会执行。
以上命令产生以下输出 -
The value of variable c is 15
检查字符串变量
以下示例显示如何将if
语句用于字符串。
@echo off
SET str1=String1
SET str2=String2
if %str1%==String1 echo "The value of variable String1"
if %str2%==String3 echo "The value of variable c is String3"
关于上述程序有两点需要说明 -
- 第一个“if”语句检查变量
str1
的值是否包含字符串“String1”
。 如果是,那么它会在命令提示符下回显一个字符串。 - 由于第二个
“if”
语句的条件评估为false
,所以语句的echo部分将不会被执行。
以上命令产生以下输出 -
The value of variable String1
要注意的是,'if'
语句中的评估是“区分大小写的”,与上面相同的程序稍作修改,如下例所示:在第一个语句中,我们改变了比较标准,以下程序的输出将不会产生任何结果。
@echo off
SET str1=String1
SET str2=String2
if %str1%==StrinG1 echo "The value of variable String1"
if %str2%==String3 echo "The value of variable c is String3"
检查命令行参数“if”
语句的另一个常见用途是用来检查传递给批处理文件的命令行参数的值。 以下示例显示如何使用“if”
语句来检查命令行参数的值。
@echo off
echo %1
echo %2
echo %3
if %1%==1 echo "The value is 1"
if %2%==2 echo "The value is 2"
if %3%==3 echo "The value is 3"
关于上述程序有两点需要说明 -
- 上面的程序假定在执行批处理脚本时会传递
3
个命令行参数。 - 每个命令行参数与一个值进行比较。 如果标准通过,则字符串作为输出发送。
如果上面的代码被保存在一个名为test.bat
的文件中并且程序被执行为 -
test.bat 1 2 3
以下将是上述程序的输出结果 -
1
2
3
"The value is 1"
"The value is 2"
"The value is 3"