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以后会提示一句话[按任意键继续执行] ...
随机推荐
- mysql数据库表间内外链接详解
1. 内连接(自然连接) 2. 外连接 (1)左外连接 (左边的表不加限制)(2)右外连接(右边的表不加限制)(3)全外连接(左右两表都不加限制) 3. 自连接(同一张表内的连接) SQL的标准语法: ...
- mysql case when 条件过滤
[1].[代码] 使用CASE WHEN进行字符串替换处理 跳至 [1] [2] [3] [4] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2 ...
- iOS开发——网络Swift篇&NSURLSession加载数据、下载、上传文件
NSURLSession加载数据.下载.上传文件 NSURLSession类支持三种类型的任务:加载数据.下载和上传.下面通过样例分别进行介绍. 1,使用Data Task加载数据 使用全局的 ...
- HDU3572 Task Schedule 【最大流】
Task Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- cocos2dx 3.1从零学习(一)——入门篇(一天学会打飞机)
没办法,浏览这么高,为啥没人投票呢?朋友们,我这篇文章參加了csdn博文大赛.喜欢的来点个赞吧!点击:http://vote.blog.csdn.net/Article/Details?article ...
- android147 360 程序锁
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- LVS三种模式配置及优点缺点比较 转
LVS三种模式配置及优点缺点比较 作者:gzh0222,发布于2012-11-12,来源:CSDN 目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种 ...
- JavaScript 中 typeof 知多少?
typeof运算符介绍:typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型.它返回值是一个字符串,该字符串说明运算数的类型. 你知道下面typeof运算的结果吗? typeof(1 ...
- Android基本控件之Menus
在我们的手机中有很多样式的菜单,比如:我们的短信界面,每条短信,我们长按都会出现一个菜单,还有很多的种类.那么现在,我们就来详细的讨论一下安卓中的菜单 Android的控件中就有这么一个,叫做Menu ...
- Window Pains
http://poj.org/problem?id=2585 Window Pains Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...