网站首页 > 文章精选 正文
我们都知道a、A的ASCII码分别是97、65,但DOS命令中进行字符大小比较时出现a小于A的情况,即a<A,小写字母<大写字母?
主要原因是命令是扩展使用状态,此时可加/i开关,用于不区分大小写的字符比较,用法:
if /i "a" equ "A" echo ok 或 if /i "a" == "A" echo ok
以下是IF用法的详细说明:
执行批处理程序中的条件处理:
- IF [NOT] ERRORLEVEL number command
- IF [NOT] string1==string2 command
- IF [NOT] EXIST filename command
NOT 指定只有条件为 false 的情况下,Windows 才应该执行该命令。
ERRORLEVEL number 如果最后运行的程序返回一个等于或大于 指定数字的退出代码,指定条件为 true。
string1==string2 如果指定的文字字符串匹配,指定条件为 true。
EXIST filename 如果指定的文件名存在,指定条件为 true。
command 如果符合条件,指定要执行的命令。如果指定的条件为 FALSE,命令后可跟 ELSE 命令,该命令将在 ELSE 关键字之后执行该命令。
ELSE 子句必须出现在同一行上的 IF 之后。例如:
IF EXIST filename. (
del filename.
) ELSE (
echo filename. missing.
)
由于 del 命令需要用新的一行终止,因此以下子句不会有效:
IF EXIST filename. del filename. ELSE echo filename. missing
由于 ELSE 命令必须与 IF 命令的尾端在同一行上,以下子句也不会有效:
IF EXIST filename. del filename.
ELSE echo filename. missing
如果都放在同一行上,以下子句有效:
IF EXIST filename. (del filename.) ELSE echo filename. missing
如果命令扩展被启用,IF 会如下改变:
- IF [/I] string1 compare-op string2 command
- IF CMDEXTVERSION number command
- IF DEFINED variable command
其中, compare-op 可以是:
- EQU - 等于
- NEQ - 不等于
- LSS - 小于
- LEQ - 小于或等于
- GTR - 大于
- GEQ - 大于或等于
而 /I 开关(如果指定)说明要进行的字符串比较不分大小写。
/I 开关可以用于 IF 的 string1==string2 的形式上。这些比较都是通用的;原因是,如果 string1 和 string2 都是由数字组成的,字符串会被转换成数字,进行数字比较。
CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样,除了它是在跟与命令扩展有关联的内部版本号比较。第一个版本是 1。每次对命令扩展有相当大的增强时,版本号会增加一个。
命令扩展被停用时,CMDEXTVERSION 条件不是真的。
如果已定义环境变量,DEFINED 条件的作用跟 EXIST 的一样,除了它取得一个环境变量,返回的结果是 true。
如果没有名为 ERRORLEVEL 的环境变量,%ERRORLEVEL%会扩充为 ERROLEVEL 当前数值的字符串表达式;否则,你会得到其数值。运行程序后,以下语句说明 ERRORLEVEL 的用法:
goto answer%ERRORLEVEL%
:answer0
echo Program had return code 0
:answer1
echo Program had return code 1
你也可以使用以上的数字比较:
IF %ERRORLEVEL% LEQ 1 goto okay
如果没有名为 CMDCMDLINE 的环境变量,%CMDCMDLINE%将在 CMD.EXE 进行任何处理前扩充为传递给 CMD.EXE 的原始命令行;否则,你会得到其数值。
如果没有名为 CMDEXTVERSION 的环境变量,%CMDEXTVERSION% 会扩充为 CMDEXTVERSION 当前数值的字串符表达式;否则,你会得到其数值。
猜你喜欢
- 2025-07-07 大小写字母转换(电脑键盘哪个是大小写字母转换)
- 2025-07-07 编码器的A相、B相、Z相指什么?(编码器a相跟b相能反接吗)
- 2025-07-07 Python 公共操作,超级解析!这也太详细了!
- 2025-07-07 探秘C语言黑洞!避免这10个易错用法,让你的代码更安全!
- 2025-07-07 变压器绕组变比测量仪串口数据采集存入数据库对接MES系统方案
- 2025-07-07 IFIX基础知识---标签名后缀(ifram标签的作用)
- 2025-07-07 计算机储存数字和字符的方法你了解多少?
- 2025-07-07 Python运算符:数学助手,轻松拿咧
- 2025-07-07 学习永远不晚 C语言试题及答案(学习永远不晚 C语言试题及答案免费下载)
- 2025-07-07 Shell编程基础及变量(shell编程变量赋值)
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)