中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何选择一组变量中的某个值
作者:
标题: 如何选择一组变量中的某个值 上一主题 | 下一主题
murong
初级用户





积分 46
发帖 17
注册 2007-11-30
状态 离线
『楼 主』:  如何选择一组变量中的某个值

如何选择一组变量中的某个值,就是输入的字符与变量库中的比较,例如:

@echo off
set in=a b c
set /p input=输入:
if /i "%input%"=="%in%" echo Yes
if /i not %input%=="%in%" echo No
pasue

上面的命令,比如我输入a,b,c 3个中那个就显示Yes,输入别的就显示No

2007-12-4 23:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  


@echo off
set in=a b c
set /p input=请输入:
for %%a in (%in%) do if /i "%%a"=="%input%" echo Yes & goto end
echo NO
:end
pause


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





积分 46
发帖 17
注册 2007-11-30
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by lxmxn at 2007-12-5 12:02 AM:
@echo off
set in=a b c
set /p input=请输入:
for %%a in (%in%) do if /i "%%a"=="%input%" echo Yes & goto end
echo NO
:end
pause

能否详细的解释下是怎么得到变量的过程
在前面的in不是就等于 a b c吗

2007-12-5 00:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  

这个是用你输入的字符和in里面的每个以空格分割的元素进行比较,如果相等,则显示“Yes”,否则显示“NO”。

2007-12-5 00:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
murong
初级用户





积分 46
发帖 17
注册 2007-11-30
状态 离线
『第 5 楼』:  

OK,谢谢恢复,已经明白了,也就是这种在组内取值必须用for才能完成。不像Linux下的if

2007-12-5 00:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  

Linux 下的if是怎么判断的呢?

2007-12-5 00:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
murong
初级用户





积分 46
发帖 17
注册 2007-11-30
状态 离线
『第 7 楼』:  

lxmxn能否加你的QQ问些别的问题

2007-12-5 00:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
murong
初级用户





积分 46
发帖 17
注册 2007-11-30
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by murong at 2007-12-5 12:12 AM:



能否详细的解释下是怎么得到变量的过程
在前面的in不是就等于 a b c吗

如果我把 a b c 些在for的()里,是不是不行啊。
那么取得的值就是最后一个c,不知道对不对?

2007-12-5 00:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
murong
初级用户





积分 46
发帖 17
注册 2007-11-30
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by murong at 2007-12-5 12:12 AM:



能否详细的解释下是怎么得到变量的过程
在前面的in不是就等于 a b c吗

for %%a in (%in%) do if /i "%%a"=="%input%" echo Yes & goto end
为什么%%a在==前,如果%input%在==前是什么样?

2007-12-5 00:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
murong
初级用户





积分 46
发帖 17
注册 2007-11-30
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by lxmxn at 2007-12-5 12:02 AM:
@echo off
set in=a b c
set /p input=请输入:
for %%a in (%in%) do if /i "%%a"=="%input%" echo Yes & goto end
echo NO
:end
pause

这样是不是要有个变量延迟的设置啊

2007-12-5 01:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 11 楼』:  



  Quote:
lxmxn能否加你的QQ问些别的问题

我QQ经常隐身了,加我的Gmail吧。lxmxn520@Gmail.com 。

  Quote:
如果我把 a b c 些在for的()里,是不是不行啊。
那么取得的值就是最后一个c,不知道对不对?

可以取到括号里面的每个值。

  Quote:
这样是不是要有个变量延迟的设置啊

这里不需要变量延迟,因为在for内部没有设置新的变量。

2007-12-5 04:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: