![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 18:42 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS学习入门 & 精彩文章 (教学室) » if命令的用法 |
| 可打印版本 1,959 / 5 |
| 第1楼 k2000zzy2008 | 发表于 2008-06-30 02:11 |
| 新手上路 发帖 7 积分 16 来自 阳江 | |
|
if命令的用法 我是新手啊,请问一下if命令是如何用的呢?
|
|
| 第2楼 lianjiang2004 | 发表于 2008-06-30 07:43 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
If在批处理程序中执行条件处理。
语法 if errorlevel number command if string1==string2 command if exist filename command 如果启用了命令扩展,请使用以下语法: if string1 compareop string2 command if cmdextversion number command if defined variable command 参数 not 指定只有当条件为假时才执行该命令。 errorlevel number 只有当由 Cmd.exe 运行的前一个程序返回大于或等于 number 的退出代码时,才能指定真条件。 command 指定只有满足前面的条件时才应执行的命令。 string1==string2 只有当 string1 和 string2 相同时才能指定真条件。这些值可以是文字字符串或批处理变量(例如,%1)。对于文字字符串,不需要使用问号。 exist filename 如果 filename 存在,则指定真条件。 CompareOp 指定 3 个字母的比较运算符。下表列出了 compareop 的有效值。 运算符 说明 EQU 等于 NEQ 不等于 LSS 少于 LEQ 少于或等于 GTR 大于 GEQ 大于或等于 /i 强制字符串比较忽略大小写。可以在 if 的 string1==string2 形式上使用/i。这些比较是通用的,如果 string1 和 string2 都由所有的数字组成,那么字符串将被转换为数字并且将执行数字比较。 cmdextversion number 只有当与 Cmd.exe 的“命令扩展”功能相关的内部版本号等于或大于 number 时,才指定真条件。第一个版本是 1。当命令扩展的功能有重大增强时,则在此号码上加 1。当禁用了命令扩展时(默认情况下为启用),cmdextversion 条件不为真。 defined variable 如果定义了 variable,则指定条件为真。 expression 指定将传递给 else 子句中命令的命令行命令和任何参数。 /? 在命令提示符显示帮助。 注释 如果 if 命令中指定的条件为真,则系统将执行该条件后的命令。如果条件为假,则 if 子句中的命令将被忽略,同时执行 else 子句中的任何命令(如果指定)。 程序停止时,将返回退出码。可以利用 errorlevel 参数将退出码用作条件。 使用 defined variable 如果使用 defined variable,可以添加下面三个变量:%errorlevel%、 %cmdcmdline% 和 %cmdextversion%。 %errorlevel% 扩展到 errorlevel 当前值的字符串表达式,如果没有名为 ERRORLEVEL 的环境变量,就可取代它的值。下面的范例说明了如何在运行批处理程序后使用 errorlevel: goto answer%errorlevel% :answer0 echo Program had return code 0 :answer1 echo Program had return code 1 goto end :end echo done! 也可以使用如下的 CompareOp 比较运算符: if %errorlevel% LEQ 1 goto okay %cmdcmdline% 在任何 Cmd.exe 处理之前扩展传递到 Cmd.exe 的源命令行,如果没有名为 cmdcmdline 的环境变量,就可取代它的值。 %cmdextversion% 扩展到 cmdextversion 当前值的字符串表达式,如果没有名为 CMDEXTVERSION 的环境变量,就可取代它的值。 使用 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 范例 如果没有找到文件 Product.dat,将会显示如下消息: if not exist product.dat echo Can't find data file 如果格式化驱动器 A 中的磁盘期间出现错误,则下面范例将会显示错误消息: :begin @echo off format a:/s if not errorlevel 1 goto end echo An error occurred during formatting. :end echo End of batch program. 如果没有出现错误,将跳过错误消息。 if 命令不能用于直接测试目录,但空 (NUL) 设备确实存在于每个目录中。因此,可以通过测试零设备确定目录是否存在。以下范例可测试目录的存在: if exist c:mydir\nul goto process 格式化图例 格式 含义 斜体 用户必须提供的信息 粗体 用户必须像显示的一样准确键入的元素 省略号 (...) 可在命令行中重复多次的参数 在括号 () 之间 可选项目 在大括号 ({}) 之间;将选项用竖线 (|) 隔开。例如:{even|odd} 用户必须从中只选择一个选项的选项组 Courier 字体 代码或程序输出 |
|
| 第3楼 xxgzs | 发表于 2008-07-01 00:28 |
| 新手上路 发帖 7 积分 14 | |
|
好东西,支持一个。
|
|
| 第4楼 k2000zzy2008 | 发表于 2008-07-01 02:07 |
| 新手上路 发帖 7 积分 16 来自 阳江 | |
|
谢啦
|
|
| 第5楼 danjiang | 发表于 2008-07-02 16:25 |
| 初级用户 发帖 45 积分 79 | |
|
if /?
|
|
| 第6楼 wzqaxue | 发表于 2008-09-26 00:39 |
| 新手上路 发帖 8 积分 18 | |
|
xiexie,ding
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |