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. static关键字修饰类

    今天继续研究公司的新项目,据说是京东的架构,研究看了一番,果然很牛逼,大致是Maven+spingmvc+spring+mybatis+ehcache+velocity来搭建的,数据库用的是mysql ...

  2. 栈的应用1——超级计算器(中缀与后缀表达式)C语言

    这里要学的程序主要用来实现一个功能——输入表达式输出结果,也就是一个计算器.效果如下: 这个程序主要有两个步骤:1.把中缀表达式转换为后缀表达式:2.计算后缀表达式的结果. 首先先明白几个问题: 1. ...

  3. cocos2d-x 缓动曲线

    转自:http://blog.csdn.net/cocos2der/article/details/7261808 在实现运动中,我们常常需要实现一些加速度或者减速度的效果,cocos2d-x引擎为我 ...

  4. 关于java的JIT知识

    1.JIT的工作原理图  工作原理 当JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给JIT编译器.JIT编译器将字节码编译成本机机器代码. 通常javac将程序源码编译, ...

  5. [Javascript] Manipulate the DOM with the classList API

    Learn how to add, remove and test for CSS classes using the classList API. It's more powerful than u ...

  6. sql操作事务SqlTransHelper类实现

    具体实现代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  7. Masonry+Infinite-Scroll实现无刷新无分页完美瀑布流(转)

    一.Masonry 是基于Jquery插件,用于对CSS布局的可移动层进行重新布局.Masonry愿意石工,可以这样形象的理解,页面上很多大小不一的移动层可以想象成散乱的石头,经过Masonry这个石 ...

  8. MySQL Router 测试使用 转

    MySQL Router 测试使用 . 特性 MySQL Router 并没有包括一些特别新的特性, 总体上看中规中矩, 不过 first-available 和插件两个特性挺有意思, 后续会进行讲解 ...

  9. MYSQL内存--------启动mysql缓存机制,实现命中率100% 转

    虽然这个标题夸张得过了头,但此文很完整,值得学习.转自 http://www.yy520.net/read.php?278 myql优化,启动MySQL缓存机制,实现命中率100% 配置你的mysql ...

  10. java_有返回值线程_提前加载例子

    package com.demo.test3; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionE ...