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. c# 递归算法

    c# 递归算法 2009-03-13 09:44 6950人阅读 评论(8) 收藏 举报 算法c#funn2c 1)1.1.2.3.5.8.......用递归算法求第30位数的值? 首先我们可以发现从 ...

  2. 使用ASP.NET 构建 Web 应用程序快速入门-8小时的免费培训视频

    - Scott Hanselman的中文博客[转载] [原文发表地址] Building Web Apps with ASP.NET Jump Start - 8 Hours of FREE Trai ...

  3. 一个 C# 获取高精度时间类(调用API QueryP*)

    如果你觉得用 DotNet 自带的 DateTime 获取的时间精度不够,解决的方法是通过调用 QueryPerformanceFrequency 和 QueryPerformanceCounter这 ...

  4. status pending状态

    开发采用ssh,注解的方式,事物也application.xml配置了,但是在业务层没有使用@Transactional造成浏览器一直处于status pending状态,为什么没有使用@Transa ...

  5. git使用具体介绍

    1. Git概念  1.1. Git库中由三部分组成         Git 仓库就是那个.git 文件夹,当中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪 ...

  6. OA系统权限管理设计(转载)

    不论什么系统都离不开权限的管理,有一个好的权限管理模块,不仅使我们的系统操作自如,管理方便,也为系统加入亮点. l         不同职责的人员,对于系统操作的权限应该是不同的.优秀的业务系统,这是 ...

  7. Educational Codeforces Round 2 C. Make Palindrome 贪心

    C. Make Palindrome Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/600/pr ...

  8. 飘逸的python - 编码杂症之在字符串前面加u

      有时候我们从其它地方接受的字符串经过艰难跋涉,它变了个样.比如收到的是'\u6253\u602a\u8005'而不是u'\u6253\u602a\u8005'. 明明肉眼看起来只需要加个u,但是怎 ...

  9. codeforce447 D SGU 548 贪心+优先队列

    codeforce447 D - DZY Loves Modification 题意:有一个n*m的矩阵,每次可以选择一行或者一列,可以得到这行或这列的所有元素sum的积分,然后使这一列/行的每一个元 ...

  10. 在Zend Studio中为ThinkPHP添加代码自动提示功能

    身边很多朋友都使用ThinkPHP或CodeIgniter等开发框架为自己的项目提高开发效率. 在得力于这些优秀框架良好的设计结构的同时,也头疼于代码的自动完成提示功能没有纯PHP网站那么完善了.经常 ...