中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何将键盘的输入字符直接送入某变量作为选择项
作者:
标题: [求助]如何将键盘的输入字符直接送入某变量作为选择项 上一主题 | 下一主题
Jneny
高级用户

中國DOS聯盟常任參議员


积分 686
发帖 318
注册 2005-11-4
状态 离线
『楼 主』:  [求助]如何将键盘的输入字符直接送入某变量作为选择项

我们做选择批处理一般是用CHOICE命令,可否有像INPUT这样的命令能将键盘的输入字符直接送入某变量作为选择项再进行判断,从而省略CHOICE命令。
(或是SET命令可否直接接收键盘的输入字母并赋给某变量从面进行选择)
~~!/??


───────────────── 版务记录 ─────────────────
执行:Will Sort
操作:修改标题:《19028 - DOS 命令……》
说明:原主题作者在通知发出三日后仍未申诉或修改,由版主修改并进行处罚
处罚:扣除因发表该主题而奖励的6点积分,扣除标题违规惩罚性2点积分
提示:请访问 {7326}论坛新手必读,所有人的基本行为准则[转帖]
───────────────── 版务记录 ─────────────────


[ Last edited by willsort on 2006-2-13 at 20:07 ]

   此帖被 -8 点积分      点击查看详情   


2006-2-7 15:05
查看资料  发送邮件  发短消息 网志  OICQ (290256061)  编辑帖子  回复  引用回复
JonePeng
金牌会员

D◎$ Fαп


积分 4562
发帖 1883
注册 2004-1-19
来自 广东广州
状态 离线
『第 2 楼』:  

在CMD下可以输入 Set /p xyz=
然后就可以将键盘输入的字符赋值到变量xyz中



----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
  
2006-2-7 18:30
查看资料  发送邮件  发短消息 网志  OICQ (373343541)  编辑帖子  回复  引用回复
Jneny
高级用户

中國DOS聯盟常任參議员


积分 686
发帖 318
注册 2005-11-4
状态 离线
『第 3 楼』:  

哦 ,你说的是2000中的SET!
在MSDOS中有什么命令呢能有这种功能,MSDOS中的SET好像没有这种用法??

2006-2-8 14:19
查看资料  发送邮件  发短消息 网志  OICQ (290256061)  编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


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


───────────────── 版主提示 ─────────────────
为了方便论坛用户浏览和版主管理,请修改该主题的标题,以简要叙述主题的内容或意图
如果确认标题不需要修改,请继续回复该主题进行申辩,若申辩理由充分,将取消该通知
如果确认标题需要修改,请点击该主题首帖下方"编辑"按钮,在编辑页面中修改标题栏
如果此通知发出三日后仍未进行申诉或修改,将由版主进行修改,并对作者进行相应处罚
处罚为扣除8点积分,包括追回因发表主题奖励的6分和因标题违规而惩罚性扣除的2分
───────────────── 版主提示 ─────────────────


Re Jonsgen:

      DOS下没有内部命令和非第三方工具的外部命令可以直接提供你所需要的功能,但我们可以通过一些简单的批处理或者第三方提供的工具软件来完成将输入的字符(串)存储到环境变量中。

      现给出批处理的方案,引自[1]略作修补,至于使用的第三方工具有很多,strings/aset/xset/input等都有可能满足你的要求,看你能够找到哪个了。

接受任意字母(不论大小写,如果只想接受大写可以使用 choice 的参数开关 /s)并以大写形式保存至环境变量
@echo off
choice /n /cABCDEFGHIJKLMNOPQRSTUVWXYZ Input a letter:
for %%d in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if errorlevel H%%d set letter=%%D
echo Your letter "%letter%"
接受任意字母(不论大小写,如果只想接受小写可以使用 choice 的参数开关 /s)并以小写形式保存至环境变量
@echo off
choice /n /cabcdefghijklmnopqrstuvwxyz Input a letter:
for %%d in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do if errorlevel x%%d set letter=%%D
echo Your letter "%letter%"
接受任意数字并保存至环境变量
@echo off
choice /n /c###0123456789 Input a number:
for %%d in (0 1 2 3 4 5 6 7 8 9) do if errorlevel J%%d set numer=%%D
echo Your number "%number%"
这是另一个数字的接受判断代码,但是并未使用*BennyLevel Error Checking*。
@echo off
choice /n /c#########0123456789 Input a number:
for %%d in (0 1 2 3 4 5 6 7 8 9) do if errorlevel 1%%d set numer=%%D
echo Your number "%number%"
[1]*BennyLevel Error Checking*
http://www.cn-dos.net/forum/viewthread.php?tid=17859#pid105801

[ Last edited by willsort on 2006-2-10 at 12:18 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-2-10 11:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Jneny
高级用户

中國DOS聯盟常任參議员


积分 686
发帖 318
注册 2005-11-4
状态 离线
『第 5 楼』:  

引用:
@echo off
1.> choice /n /cABCDEFGHIJKLMNOPQRSTUVWXYZ Input a letter:
2.>for %%d in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if errorlevel H%%d set letter=%%D
3.>echo Your letter "%letter%"
第2句的 if errorlevel H%%d set letter=%%D 是什么作用呀??
请版主赐教~~!!!

2006-2-10 13:32
查看资料  发送邮件  发短消息 网志  OICQ (290256061)  编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


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

Re Jonsgen:

      这正是上文中所提到的 “BennyLevel Error Checking”,因此这种错误码校验法是由 Benny Pedersen 首先发现的,故名。简单来说,它主要利用了 if errorlevel 对其后的错误码不进行校验的漏洞,详细解释起来比较复杂,如果你可以阅读英文,不妨参考[1]。

[1]Google Group - BennyLevel Error Checking
http://groups.google.com/group/a ... ad/4376cc118df49ef0



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-2-13 17:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: