中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教一个批处理 if 和 set命令
作者:
标题: 请教一个批处理 if 和 set命令 上一主题 | 下一主题
yinyuan
初级用户





积分 50
发帖 22
注册 2006-5-14
状态 离线
『楼 主』:  请教一个批处理 if 和 set命令

这几天想学习一下批处理的几个常用命令,在下面的批处理中有一条命令不太明白,请指导一下: @Echo off COLOR 1F Title 选择操作 :Start CLS Echo. Echo    1. 设置E.F分区的PE文件为系统隐藏属性 Echo      2. xp 、hotmail 密码管理 Echo      0. 退出 Echo. Set Choice= Set /P Choice=    请选择要操作的序号 , 然后按回车: If %Choice%Choice==Choice Goto Start 这一句是不是多余的?发现去掉后没什么影响,这一句到底是什么意思? If Not '%Choice%'=='' SET Choice=%Choice:~0,1% If /I '%Choice%'=='1' GOTO 1 If /I '%Choice%'=='2' GOTO 2 If /I '%Choice%'=='0' EXIT Goto Start :1 Echo. ........................ [ Last edited by yinyuan on 2007-11-25 at 12:01 PM ]


2007-11-23 11:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
upsco
初级用户





积分 67
发帖 32
注册 2007-11-19
状态 离线
『第 2 楼』:  

If %Choice%Choice==Choice Goto Start 这句是判断变量Choice的值是否为空,既判断用户是否有输入


2007-11-23 11:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yinyuan
初级用户





积分 50
发帖 22
注册 2006-5-14
状态 离线
『第 3 楼』:  

Originally posted by upsco at 2007-11-23 11:16: If %Choice%Choice==Choice Goto Start 这句是判断变量Choice的值是否为空,既判断用户是否有输入
但去掉这一条,在没有输入的情况下按回车,结果是一样的。看不出有什么不同呀。 能不能解释一下,有这条命令和没有这条命令的具体区别?


2007-11-23 11:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 4 楼』:  

@Echo off COLOR 1F Title 选择操作 :Start CLS Echo. Echo    1. 设置E.F分区的PE文件为系统隐藏属性 Echo      2. xp 、hotmail 密码管理 Echo      0. 退出 Echo. Set Choice= Set /P Choice=    请选择要操作的序号 , 然后按回车: If %Choice%Choice==Choice Goto Start 这一句是不是多余的?发现去掉后没什么影响,这一句到底是什么意思? If Not '%Choice%'=='' SET Choice=%Choice:~0,1% If /I '%Choice%'=='1' GOTO 1 If /I '%Choice%'=='2' GOTO 2 If /I '%Choice%'=='0' EXIT Goto Start 有了蓝色部分,红色部分可以说是多余的




2007-11-23 11:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yinyuan
初级用户





积分 50
发帖 22
注册 2006-5-14
状态 离线
『第 5 楼』:  

多谢楼上二位老师,终于明白了


2007-11-23 11:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yinyuan
初级用户





积分 50
发帖 22
注册 2006-5-14
状态 离线
『第 6 楼』:  

还有一点不明白,我在这个批处理里输入10 回车,就会执行序号1的内容,但我输的10在这个批处理里没有这个序号呀,怎么解决。


2007-11-23 11:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 7 楼』:  

单引号 改成 双引号 试一试~~ "" 是字符串完全匹配的意思


2007-11-23 22:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yinyuan
初级用户





积分 50
发帖 22
注册 2006-5-14
状态 离线
『第 8 楼』:  

改成双引号后,所有跳转都无效了


2007-11-24 11:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 9 楼』:  

楼主没看到版务记录吗?谁想回了贴再被版主删除? If Not '%Choice%'=='' SET Choice=%Choice:~0,1% 如果Choice变量不是空的,设置Choice变量取原变量的前1个字节。 也就是说Choice变量只能是1个字节,即使输入100取原变量的前1个字节也是1。




2007-11-24 12:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hxwxyz
中级用户




积分 245
发帖 123
注册 2007-6-8
状态 离线
『第 10 楼』:  

学习了


2007-11-24 13:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yinyuan
初级用户





积分 50
发帖 22
注册 2006-5-14
状态 离线
『第 11 楼』:  

Originally posted by fastslz at 2007-11-24 12:37: 楼主没看到版务记录吗?谁想回了贴再被版主删除? If Not '%Choice%'=='' SET Choice=%Choice:~0,1% 如果Choice变量不是空的,设置Choice变量取原变量的前1个字节 ...
彻底明白了,多谢楼上几位! 才注意到版务记录,马上改


2007-11-24 13:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: