中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: if命令的用法 上一主题 | 下一主题
k2000zzy2008
新手上路




积分 16
发帖 7
注册 2008-6-23
来自 阳江
状态 离线
『楼 主』:  if命令的用法

我是新手啊,请问一下if命令是如何用的呢?

2008-6-30 02:11
查看资料  发送邮件  发短消息 网志  OICQ (2147483647)  编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 2 楼』:  

If在批处理程序中执行条件处理。

语法
if [not] errorlevel number command [else expression]

if [not] string1==string2 command [else expression]

if [not] exist filename command [else expression]

如果启用了命令扩展,请使用以下语法:

if string1 compareop string2 command [else expression]

if cmdextversion number command [else expression]

if defined variable command [else expression]

参数
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 字体 代码或程序输出



Windows 一键还原
http://www.yjhy.com
2008-6-30 07:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xxgzs
新手上路




积分 14
发帖 7
注册 2008-6-21
状态 离线
『第 3 楼』:  

好东西,支持一个。

2008-7-1 00:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
k2000zzy2008
新手上路




积分 16
发帖 7
注册 2008-6-23
来自 阳江
状态 离线
『第 4 楼』:  

谢啦

2008-7-1 02:07
查看资料  发送邮件  发短消息 网志  OICQ (2147483647)  编辑帖子  回复  引用回复
danjiang
初级用户





积分 79
发帖 45
注册 2007-11-28
状态 离线
『第 5 楼』:  

if /?

2008-7-2 16:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wzqaxue
新手上路





积分 18
发帖 8
注册 2008-9-26
状态 离线
『第 6 楼』:  

xiexie,ding

2008-9-26 00:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: