IF语句是批处理中执行的条件分歧处理。

批处理中,IF分歧的写法有好几种,接下来,我们来一个一个的分析IF语法的结构。

1、IF [NOT] ERRORLEVEL 番号 批处理命令

当ERRORLEVEL的值大于等于指定的番号的值时,执行指定的批处理命令。

@echo off

call :called0
IF ERRORLEVEL  (
    echo ERRORLEVEL = %ERRORLEVEL%
)

call :called1
IF ERRORLEVEL  (
    echo ERRORLEVEL = %ERRORLEVEL%
)

call :called2
IF ERRORLEVEL  (
    echo ERRORLEVEL = %ERRORLEVEL%
)

exit /b 

:called0
SETLOCAL
    echo called0
    exit /b
ENDLOCAL

:called1
SETLOCAL
    echo called1
    exit /b
ENDLOCAL

:called2
SETLOCAL
    echo called2
    exit /b
ENDLOCAL

运行的结果为:

C:\Users\liuhongying>F:\tmp\a.bat

called0
called1
ERRORLEVEL = 100
called2
ERRORLEVEL = 101

发现,在返回值跟100比的时候,只有等于100和大于100的时候,执行到了下面的批处理命令,而在99的时候,就没有执行批处理命令,这个测试你结果,你就应该明白了吧!

2、IF [NOT] 文字列1==文字列2 批处理命令

这个判断是比较文字列1和文字列2是不是相等,如果是变量,就要用%来取出变量的值来比较。

IF [/I] [NOT] 文字列1==文字列2 批处理命令

有一个控制开关,/I,是控制比较的时候是不是忽略大小写。如果有/I这个开关存在的时候,比较的时候就会忽略大小写去比较。

看看下面这个例子,你就 应该全部明白了。

@echo off

IF abcdef==abcdef (
    echo abcdef==abcdef
)

IF AbCdEF==abcdef (
    echo AbCdEF==abcdef
)

IF /I ABCDEF==abcdef (
    echo ABCDEF==abcdef
)

IF /I AbCdEF==abcdef (
    echo AbCdEF==abcdef
)

F:\tmp>a.bat
abcdef==abcdef
ABCDEF==abcdef
AbCdEF==abcdef

3、IF [NOT] EXIST 文件名 批处理命令

帮助上面写的是判断文件名是否存在,其实,这个判断方法既可以判断文件是否存在,又可以判断路径是不是存在。

@echo off

IF EXIST F:\tmp\a.bat (
    echo EXIST:F:\tmp\a.bat
)

IF EXIST F:\tmp (
    echo EXIST:F:\tmp
)

执行结果:

F:\tmp>a.bat
EXIST:F:\tmp\a.bat
EXIST:F:\tmp

4、IF [/I] 文字列1 比較演算子 文字列2 批处理命令

对文字列1和文字列2按照比较演算子进行比较,比较结果为真的时候,就执行批处理命令指定的处理。

下面对几种比较演算子进行进行介绍。

EQU - 等于(等しい)
NEQ - 不等于(等しくない)
LSS - 小于(より小さい)
LEQ - 小于等于(以下)
GTR - 大于(より大きい)
GEQ - 大于等于(以上)

下边这个例子,对这几个判断符进行解说

@echo off

echo EQU
IF a EQU a (
    echo a EQU a
)

IF a EQU b (
    echo a EQU b
)

echo NEQ
IF a NEQ a (
    echo a NEQ a
)

IF a NEQ b (
    echo a NEQ b
)

echo LSS
IF a LSS a (
    echo a LSS a
)

IF a LSS b (
    echo a LSS b
)

IF b LSS a (
    echo b LSS a
)

echo LEQ
IF a LEQ a (
    echo a LEQ a
)

IF a LEQ b (
    echo a LEQ b
)

IF b LEQ a (
    echo b LEQ a
)

echo GTR
IF a GTR a (
    echo a GTR a
)

IF a GTR b (
    echo a GTR b
)

IF b GTR a (
    echo b GTR a
)

echo GEQ
IF a GEQ a (
    echo a GEQ a
)

IF a GEQ b (
    echo a GEQ b
)

IF b GEQ a (
    echo b GEQ a
)

运行结果为:

F:\tmp>a.bat
EQU
a EQU a
NEQ
a NEQ b
LSS
a LSS b
LEQ
a LEQ a
a LEQ b
GTR
b GTR a
GEQ
a GEQ a
b GEQ a

5、IF CMDEXTVERSION 番号 批处理命令

最初的CMDEXTVERSION的值是1,当扩展命令可以使用的时候,CMDEXTVERSION的值就比1大了。

并且,当扩张技能无效的时候,这个表达式命题恒为假。

更加具体的作用,这里不去探讨了,如果以后有需要,用到了,在去追加吧!

6、IF DEFINED 変数 批处理命令

如果指定的变数定义的时候,就执行批处理命令指定的处理。更加准确的描述应该是,指定的便是的值是空的时候,句执行批处理命令指定的处理。

@echo off

set var1=abc
set var3=
set var4=   

IF DEFINED var1 (
    echo DEFINED var1
)

IF DEFINED var2 (
    echo DEFINED var2
)

IF DEFINED var3 (
    echo DEFINED var3
)

IF DEFINED var4 (
    echo DEFINED var4
)

*var3=后面是没有设置空格

*var4=后面是设置空格的

运行结果为:

F:\tmp>a.bat
DEFINED var1
DEFINED var3

PS:以上的语法介绍中,都没有详细介绍另个重要点

A:所有加[NOT]的地方,如果加了NOT以后,就将判断的调节取反。

B:所有的命令都没有介绍else的语法,所有的IF判断,都是可以再行后最佳【else 批处理命令】,也就是说,当判断条件不成立的时候,执行批处理命令指定的处理。

  更推荐的写法是,所有批处理命令都加上小括号,如下述结果

IF 条件 (
    条件为真的时候的处理
) else (
    条件为假的时候的处理
)

DOS批处理命令-if语句的更多相关文章

  1. DOS批处理命令-for语句

    for是为了循环执行一系列命令而执行的命令语句. for要处理的内容不同,语法结构稍有不同.下面就各种情形来分别 1.基本的语法:FOR %変数 IN (set) DO 命令 [参数] 语法内容解析: ...

  2. DOS批处理命令判断操作系统版本、执行各版本对应语句

    DOS批处理命令判断操作系统版本.执行各版本对应语句   昨天在家里试用  netsh interface ip set address 这些命令更改上网IP.DNS.网关等,今天将那些代码拿来办公室 ...

  3. DOS批处理命令递归删除给定的文件(夹),兼VC工程清理小工具

    使用dos批处理命令递归删除指定的文件(夹): (下面内容针对清理VC工程!自己按说明任意修改) 2014-06-10修改:删除前增加了[y,n]询问: echo off rem 递归删除当前文件下指 ...

  4. DOS批处理命令-@命令

    @命令是一个禁止当前语句回显的简单命令. 语法: @[command].[command]是要屏蔽的批处理命令 例如执行包含以下内容的bat文件 echo on @echo ------- @echo ...

  5. DOS批处理命令-几个固定名称的变量

    批处理中有一些变量的变量名称是固定的,具有特定的意义,接下来,我们来看看这些有特定意义的变量到底有什么意义. 1.%CD%   当前路径的路径名[盘符 + 路径]    - 現在のディレクトリ文字列に ...

  6. cocos2d-x教程3:用php或DOS批处理命令来转换文件和解压缩zip

    在cocos2d-x使用中,须要不停的转换文件和压缩或解压文件.假设全人工来做,太麻烦了,且easy出错. 我如今把一些用的到批处理贴出来,供大家使用 自己主动把dat文件按数字排序重命名gz.DOS ...

  7. DOS批处理命令-call命令

    call命令 在批处理中调用别的批处理或者可运行程序或者 バッチ プログラムを別のバッチ プログラムから呼び出します. 语法 1.CALL [驱动盘符:][路径]文件名 [参数] 调用并执行[驱动盘符 ...

  8. DOS批处理命令-注释

    注释是每个程序中不可或缺的(不是对计算机来说,而是对我们这些程序员阅读代码来说) 语法: ①rem 这是批处理的注释命令,rem后面的内容全部是注释 例:rem 这是一行注释 ②:: 批处理遇到以冒号 ...

  9. DOS批处理命令-pause

    “pause”用于暂停批处理的执行器并给出提示信息,然后由用户决定是继续执行还是终端执行. 语法: pause 简单一个pause,不附带任何参数. 执行pause以后会提示一句话[按任意键继续执行] ...

随机推荐

  1. 【Android应用开发】 OpenGL ES -- 透视投影 和 正交投影

    博客地址 : http://blog.csdn.net/shulianghan/article/details/46680803 源代码下载 : http://download.csdn.net/de ...

  2. Codeforces Round #330 (Div. 2)D. Max and Bike 二分 物理

    D. Max and Bike Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/595/probl ...

  3. MyBatis之五:动态sql语句

    在mybatis 3 或以上的版本提供了4类标签,分别是:if,choose(when,otherwise),rim(where,set),foreach.接下来将分别介绍这几种标签的具体用法,映射x ...

  4. 根据字符串创建FTP本地目录 并按照日期建立子目录返回路径

    /** * 根据字符串创建FTP本地目录 并按照日期建立子目录返回 * @param path * @return */ private String getFolder(String path) { ...

  5. phpcms v9和discuz X3.1实现同步登陆退出论坛(已实现)

    网络上文章很多,按步骤配置好了之后phpcms可以同步登录dz,但是dz登录后状态却无法同步到phpcms,网络上找了很多资料都大同小异,头大.只能自己调试了,废话不多说了.       以下网络上抄 ...

  6. C++ Button右键弹出式菜单

    Button右键弹出式菜单 关键点 用类来实现 的 实现过程 新建1个类  类名CButtonPopMenu 基类CButton 新建1个菜单资源 IDR_MENU1 // ButtonPopMenu ...

  7. js获取网络图片的宽和高

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. JAVA static 作用

    static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何 ...

  9. Key Task

    Problem Description The Czech Technical University is rather old - you already know that it celebrat ...

  10. lvs持久性工作原理和配置

    作者: ISADBA|FH.CN 日期: // 转载请注明: 作者:ISADBA.COM|FH.CN BLOG:http://isadba.com 原文:http://isadba.com/?p=67 ...