DOS批处理命令-if语句
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语句的更多相关文章
- DOS批处理命令-for语句
for是为了循环执行一系列命令而执行的命令语句. for要处理的内容不同,语法结构稍有不同.下面就各种情形来分别 1.基本的语法:FOR %変数 IN (set) DO 命令 [参数] 语法内容解析: ...
- DOS批处理命令判断操作系统版本、执行各版本对应语句
DOS批处理命令判断操作系统版本.执行各版本对应语句 昨天在家里试用 netsh interface ip set address 这些命令更改上网IP.DNS.网关等,今天将那些代码拿来办公室 ...
- DOS批处理命令递归删除给定的文件(夹),兼VC工程清理小工具
使用dos批处理命令递归删除指定的文件(夹): (下面内容针对清理VC工程!自己按说明任意修改) 2014-06-10修改:删除前增加了[y,n]询问: echo off rem 递归删除当前文件下指 ...
- DOS批处理命令-@命令
@命令是一个禁止当前语句回显的简单命令. 语法: @[command].[command]是要屏蔽的批处理命令 例如执行包含以下内容的bat文件 echo on @echo ------- @echo ...
- DOS批处理命令-几个固定名称的变量
批处理中有一些变量的变量名称是固定的,具有特定的意义,接下来,我们来看看这些有特定意义的变量到底有什么意义. 1.%CD% 当前路径的路径名[盘符 + 路径] - 現在のディレクトリ文字列に ...
- cocos2d-x教程3:用php或DOS批处理命令来转换文件和解压缩zip
在cocos2d-x使用中,须要不停的转换文件和压缩或解压文件.假设全人工来做,太麻烦了,且easy出错. 我如今把一些用的到批处理贴出来,供大家使用 自己主动把dat文件按数字排序重命名gz.DOS ...
- DOS批处理命令-call命令
call命令 在批处理中调用别的批处理或者可运行程序或者 バッチ プログラムを別のバッチ プログラムから呼び出します. 语法 1.CALL [驱动盘符:][路径]文件名 [参数] 调用并执行[驱动盘符 ...
- DOS批处理命令-注释
注释是每个程序中不可或缺的(不是对计算机来说,而是对我们这些程序员阅读代码来说) 语法: ①rem 这是批处理的注释命令,rem后面的内容全部是注释 例:rem 这是一行注释 ②:: 批处理遇到以冒号 ...
- DOS批处理命令-pause
“pause”用于暂停批处理的执行器并给出提示信息,然后由用户决定是继续执行还是终端执行. 语法: pause 简单一个pause,不附带任何参数. 执行pause以后会提示一句话[按任意键继续执行] ...
随机推荐
- Java计算日期和时间差
这篇文章将使用两个例子计算两个日期的时间差.1.使用Java SDK.2.使用Joda库.1.使用Java SDK 计算两个Date之间的时间差,基本思路为把Date转换为ms(微秒),然后计算两个微 ...
- 短信验证倒计时60s
$("#zphone").click(function(){ var tel2 = $("#regTel").val(); if(flag.tel){ $.po ...
- Codeforces Codeforces Round #316 (Div. 2) C. Replacement 线段树
C. ReplacementTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/570/problem ...
- delphi 自动滚动到最底端scroll
自动滚动到最底端scrollUses MSHTML;{$R *.dfm}var ScrollPos: integer=0;procedure TForm1.Button1Click(Sender: ...
- C/C++程序猿必须熟练应用的开源项目
作为一个经验丰富的C/C++程序猿, 肯定亲手写过各种功能的代码, 比方封装过数据库訪问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件訪问的类, 封装过UI界面库等, 也在实际的项目中应 ...
- MySQL server version for the right syntax to use near ‘USING BTREE
转自:http://www.douban.com/note/157818842/ 有时导入mysql会提示如下错误: C:\Users\liqiang>mysql -uroot -paaaaaa ...
- springMVC2 1入门程序
1入门程序 .1需求 实现商品列表查询 .2需要的jar包 使用spring3.2.0(带springwebmvc模块) .1前端控制器 在web.xml中配置: <?xml version=& ...
- Python学习 之 内建函数
1.常用函数:abs().max().min().len().divmod().pow().round() 例1:abs返回数字绝对值 abs(10) #结果10 abs(-10) #结果10 例2: ...
- Lua调用自定义C++类
弄了一天终于会Lua调用自定义C++类.不容易啊. 我的电脑是64位的,装了64的Python不行,装了32位的就可以了,靠!下面是报错信息 python pyyaml Cheetah全都是装32位的 ...
- Redis 脚本
Redis 脚本使用 Lua 解释器来执行脚本. Reids 2.6 版本通过内嵌支持 Lua 环境.执行脚本的常用命令为 EVAL. 语法 Eval 命令的基本语法如下: redis 127.0.0 ...