批处理脚本 - if/else 语句



下一个决策语句是 if/else 语句。以下是该语句的一般形式。

If (condition) (do_something) ELSE (do_something_else)

该语句的一般工作原理是,首先在“if”语句中评估条件。如果条件为真,则执行其后的语句,并在 else 条件前停止并退出循环。如果条件为假,则执行 else 语句块中的语句,然后退出循环。“if”语句的流程如下图所示。

If/else Statement

检查变量

就像批处理脚本中的“if”语句一样,if-else 语句也可以用于检查在批处理脚本本身中设置的变量。“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") else (echo "Unknown value") 
if %c%==10 (echo "The value of variable c is 10") else (echo "Unknown value")

关于上述程序的关键之处在于:

  • 每个“if else”代码都放在括号 () 中。如果没有括号来分隔“if”和“else”代码,则这些语句将不是有效的 if else 语句。

  • 在第一个“if else”语句中,if 条件将评估为真。

  • 在第二个“if else”语句中,由于条件将被评估为假,因此将执行 else 条件。

输出

上述命令产生以下输出。

"The value of variable c is 15" 
"Unknown value"

检查字符串变量

可以对字符串重复相同的示例。以下示例显示了如何将“if else”语句用于字符串。

示例

@echo off 
SET str1 = String1 
SET str2 = String2 

if %str1%==String1 (echo "The value of variable String1") else (echo "Unknown value") 
if %str2%==String3 (echo "The value of variable c is String3") else (echo "Unknown value")

关于上述程序的关键之处在于:

  • 第一个“if”语句检查变量 str1 的值是否包含字符串“String1”。如果是,则它会将一个字符串回显到命令提示符。

  • 由于第二个“if”语句的条件评估为假,因此该语句的回显部分将不会执行。

输出

上述命令产生以下输出。

"The value of variable String1" 
"Unknown value"

检查命令行参数

“if else”语句也可以用于检查命令行参数。以下示例显示了如何使用“if”语句来检查命令行参数的值。

示例

@echo off 
echo %1 
echo %2 
echo %3 
if %1%==1 (echo "The value is 1") else (echo "Unknown value") 
if %2%==2 (echo "The value is 2") else (echo "Unknown value") 
if %3%==3 (echo "The value is 3") else (echo "Unknown value")

输出

如果上述代码保存在名为 test.bat 的文件中,并且程序执行为

test.bat 1 2 4

则上述程序的输出将如下所示。

1 
2 
4 
"The value is 1" 
"The value is 2" 
"Unknown value"

if defined

“if”语句的一种特殊情况是“if defined”,用于测试变量是否存在。以下是该语句的一般语法。

if defined somevariable somecommand

以下是如何使用“if defined”语句的示例。

示例

@echo off 
SET str1 = String1 
SET str2 = String2 
if defined str1 echo "Variable str1 is defined"

if defined str3 (echo "Variable str3 is defined") else (echo "Variable str3 is not defined")

输出

上述命令产生以下输出。

"Variable str1 is defined" 
"Variable str3 is not defined"

if exists

“if”语句的另一种特殊情况是“if exists”,用于测试文件是否存在。以下是该语句的一般语法。

If exist somefile.ext do_something

以下是如何使用“if exists”语句的示例。

示例

@echo off 
if exist C:\set2.txt echo "File exists" 
if exist C:\set3.txt (echo "File exists") else (echo "File does not exist")

输出

假设 C 盘中存在名为 set2.txt 的文件,而不存在名为 set3.txt 的文件,则上述代码的输出将如下所示。

"File exists"
"File does not exist"
batch_script_decision_making.htm
广告