分享

第九课:if命令的详细介绍

 终为始 2019-08-15
一、if的三种用法

IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command

(1)、IF [NOT] ERRORLEVEL number do something
ERRORLEVEL number是错误码也称返回码。(只是这么叫而已,和错误二字没必然联系。)
如果最后运行的程序返回一个错误码(返回码),如果它等于或大于指定数字number,则指定条件为 true。
例子:
@echo off
ipconfig
if errorlevel 1 goto a
if errorlevel 0 goto b
:a
echo 结果为a!
pause
exit
:b
echo 结果为b!
pause
解释:“ipconfig”执行成功,则返回码为0

(2)、IF [NOT] string1==string2 do something
如果指定的文字字符串匹配,指定条件为 true。
例:
@echo off
if "520hack" == "520hack" echo 我们相等!
pause 

当然,也可以用于字符串变量的比较,如下:
@echo off
set str1=520hack
set str2=520hack
if %str1% == %str2% echo 我们相等!
pause

这里去掉两个变量的值,在加个/p来理解这个参数的作用吧!

(3)、IF [NOT] EXIST filename do something
如果指定的文件名存在,指定条件为 true。
例:
@echo off
if exist mstsc.exe echo 当前目录下存在文件mstsc.exe
pause 

解说:如果当前文件夹下存在mstsc.exe则显示“当前目录下存在文件mstsc.exe”,否则不显示。

以上各句中的[NOT]是可选项,表示只有条件为 false 的情况下,才应该执行该命令。

二、if-else语句
ELSE 子句必须在 IF 之后出现在同一行上。
例:
@echo off
IF EXIST a.txt (del a.txt) ELSE echo 不存在文件!
pause

解说:如果存在文件a.txt则删除,否则显示“不存在文件!”。本程序段的这种写法是ELSE 子句在 IF 之后出现在同一行上的特殊形式,它是通过括号“(”和“)”相连接的。

由于 ELSE 命令必须与 IF 命令的尾端在同一行上,以下子句不会有效:

IF EXIST a.txt del a.txt
ELSE echo a.txt 不存在文件!

因为 del 命令需要用一个新行终止,以下子句不会有效:
IF EXIST a.txt del a.txt ELSE echo 不存在文件!
需要用括号扩上。
IF EXIST a.txt (del a.txt) ELSE echo 不存在文件!

三、if的嵌套用法
例:
@echo off
set /p var=请输入一个数字:
if %var% gtr 5 if %var% lss 10 echo 这是一个大于5小于10的数!
pause
解说:首先要注意“%var%”,若要取出变量的值要用%%将变量括起来。其次运算符gtr代表大于,lss代表小于,类似的运算符还有:
EQU - 等于
  NEQ - 不等于
  LSS - 小于
  LEQ - 小于或等于
  GTR - 大于
  GEQ - 大于或等于

综合实例:
@echo off
:again
s=
cls
color f
set /p p=please input password:
set s=520hack
  if "%p%"=="%s%" (
      echo 您已经通过了认证!&start cmd.exe
  ) else (
      echo 密码错误!
  )
pause >nul
goto again

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多