中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如果在批处理中得到输入的变量
作者:
标题: 如果在批处理中得到输入的变量 上一主题 | 下一主题
PLATCH
初级用户




积分 105
发帖 1
注册 2003-3-19
状态 离线
『楼 主』:  如果在批处理中得到输入的变量

我想做一个批处理实现在运行要求输入一个字符串,按照这个字符串转向相应的分支。(一定要在运行中输入,不能用一开始加参数的形式)应该怎么做啊 我开始想用环境变量,用一个批处理增强程序INPUT来接受键盘输入,可是不好用我的程序是: cls input "Please Input:" FN /s rem:这句是接受输入赋给"FN" if FN=="aaa" goto a if FN=="bbb" goto b goto c :a echo This is a goto c :b echo this is b goto c :c End!!! 后来发现这个批处理增强命令INPUT不起作用。 各位高手帮忙吧。


2003-3-19 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
laoje
中级用户




积分 223
发帖 36
注册 2003-1-8
状态 离线
『第 2 楼』:  

可以考慮使用choice 呀﹐使用很簡單的 choice /? 看一下就知道如何用了。


2003-3-19 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 3 楼』:  

To PLATCH: 运行中接受字符串变量是bat的一大弱点,若是没有其他增强命令的帮忙,单纯依靠DOS 自带的内外部命令来实现这一特征,代码量将是惊人的(我自己曾经试过),而且价值也不是很大。 我遇到此类问题,一般将它转化为从命令行接受字符串参数,然后转移到相应的子程序位点,这实现起来到不太难: :start find ":%1" > nul if errorlevel 0 goto error goto %1 :proc1 ...... :proc2 ...... :error echo Invalid argument! :end 如果你必须要实现此功能,可以给你一个建议,从主程序中用 %comspec% 抛出一个DOS的子SHELL,用命令行伪装的字符串传入程序,然而将子程序实现为独立的bat程序,直接调用运行。也许我说的不太清楚,如果你想探讨此一问题,再联系!

[此贴子已经被作者于2003-3-27 10:58:40编辑过]





※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2003-3-27 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27736
发帖 10521
注册 2002-10-9
状态 离线
『第 4 楼』:  

我试了,不是INPUT不起作用,而是这个批处理程序本身有严重的BUG。 例如: if FN=="aaa" goto a if FN=="bbb" goto b 应改为: if "%FN%"=="aaa" goto a if "%FN%"=="bbb" goto b




Wengier - 新DOS时代 欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址: wendos.mycool.net/ E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
2003-3-27 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
neity
初级用户





积分 21
发帖 9
注册 2006-4-9
状态 离线
『第 5 楼』:  



2006-5-1 11:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wang6610
银牌会员




积分 1246
发帖 488
注册 2003-11-11
状态 离线
『第 6 楼』:  

再插一句: if "%FN%"=="bbb" goto b 中不等号如何表示?


2006-5-1 17:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
220110
荣誉版主




积分 718
发帖 313
注册 2005-9-26
状态 离线
『第 7 楼』:  

我所知,没有用不等号表示法,像C++的"!=",VB的"<>",只能用: if not "%FN%"== "bbb" goto b


2006-5-1 22:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hxj
中级用户




积分 377
发帖 66
注册 2005-4-4
状态 离线
『第 8 楼』:  

如只用26个字母(如盘符)作输入可用以下笨办法: Choice /C:defghijklmnopqrstuvwxyz /n Please Input disk symbol if errorlevel 23 set input=z if errorlevel 23 goto z if errorlevel 22 set input=y if errorlevel 22 goto y if errorlevel 21 set input=x if errorlevel 21 goto x if errorlevel 20 set input=w if errorlevel 20 goto w if errorlevel 19 set input=v if errorlevel 19 goto v if errorlevel 18 set input=u if errorlevel 18 goto u if errorlevel 17 set input=t if errorlevel 17 goto t if errorlevel 16 set input=s if errorlevel 16 goto s if errorlevel 15 set input=r if errorlevel 15 goto r if errorlevel 14 set input=q if errorlevel 14 goto q if errorlevel 13 set input=p if errorlevel 13 goto p if errorlevel 12 set input=o if errorlevel 12 goto o if errorlevel 11 set input=n if errorlevel 11 goto n if errorlevel 10 set input=m if errorlevel 10 goto m if errorlevel 9 set input=l if errorlevel 9 goto l if errorlevel 8 set input=k if errorlevel 8 goto k if errorlevel 7 set input=j if errorlevel 7 goto j if errorlevel 6 set input=i if errorlevel 6 goto i if errorlevel 5 set input=h if errorlevel 5 goto h if errorlevel 4 set input=g if errorlevel 4 goto g if errorlevel 3 set input=f if errorlevel 3 goto f if errorlevel 2 set input=e if errorlevel 2 goto e if errorlevel 1 set input=d if errorlevel 1 goto d


2006-5-2 08:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hxj
中级用户




积分 377
发帖 66
注册 2005-4-4
状态 离线
『第 9 楼』:  

用set /p 不知行不行? set /p input= Please input a “string" if %input%=="aaa" goto a if %input%=="bbb" goto b [ Last edited by hxj on 2006-5-2 at 08:26 ]


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

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


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



论坛跳转: