中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
<<   [1] [2]  >>   >
作者:
标题: 精通批处理的进来看看 上一主题 | 下一主题
jaceyxp
初级用户





积分 21
发帖 10
注册 2007-3-30
状态 离线
『楼 主』:  精通批处理的进来看看

设定a1=123, b1=456, c1=789, d1=009 我想得到的结果是: 随机取2个值(比如a1c1,a1d1,b1c1,b1d1等等)要求输入它们的值,输入对了就ok,不对就退出。 第一次运行时屏幕提示: 请输入组合密码a1b1: (如果输入123456)就通过,否则退出。 第二次运行时屏幕提示: 请输入组合密码d1b1: (如果输入009456)就通过,否则退出。 …… 以此类推。相当于随机取数组。这个该怎么实现? 换句话说我要实现像工商银行一样的口令卡功能。


2007-4-16 04:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 2 楼』:  

试试这个呢
  1. @echo off & setlocal enabledelayedexpansion
  2. set "a1=123"
  3. set "b1=456"
  4. set "c1=789"
  5. set "d1=009"
  6. set /a m=%random%%%4+1
  7. :loop
  8. set /a n=%random%%%4+1
  9. if "%n%"=="%m%" goto loop
  10. set count=0
  11. for %%a in (a1 b1 c1 d1) do set /a count+=1 && if "!count!"=="%m%" (set "p=%%a") else (if "!count!"=="%n%" set "q=%%a")
  12. set /p in=请输入组合密码%p%%q%:
  13. if not defined in echo fail & pause & goto exit
  14. for /f %%b in ('call echo %%%p%%%') do set "answer=%%b"
  15. for /f %%c in ('call echo %%%q%%%') do set "answer=%answer%%%c"
  16. if "%in%"=="%answer%" echo pass & pause && goto exit
  17. echo fail & pause
  18. :exit
BJSH发表于: 2007-04-15 15:57


   此帖被 +2 点积分     点击查看详情   
评分人:【 htysm 分数: +2  时间:2007-4-17 05:25


2007-4-16 05:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 3 楼』:  

Originally posted by bjsh at 2007-4-16 05:08: 试试这个呢
bjsh 兄 多写了 setlocal enabledelayedexpansion 哦,呵呵,因为你没有用


2007-4-16 05:16
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 4 楼』:  

第11句用了呀;呵呵


2007-4-16 05:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 5 楼』:  

Originally posted by bjsh at 2007-4-16 05:24: 第11句用了呀;呵呵
哦,怪我没有仔细看,不过怎么下面没有用,像这个%%%p%%%


2007-4-16 05:25
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 6 楼』:  

我记得set 有个可以连续赋值的; 也就是2 3 4 5行本来可以合成一行的;一下想不起如何连续赋值了; 哪位给提醒下啊!


2007-4-16 05:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 7 楼』:  

Originally posted by vkill at 2007-4-15 04:25 PM: 哦,怪我没有仔细看,不过怎么下面没有用,像这个%%%p%%%
真是的;用call用顺手了;直接就几个百分号上去了;


2007-4-16 05:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 8 楼』:  

Originally posted by bjsh at 2007-4-16 05:25: 我记得set 有个可以连续赋值的; 也就是2 3 4 5行本来可以合成一行的;一下想不起如何连续赋值了; 哪位给提醒下啊!
大概这个样子 set "v=!v!%%?"


2007-4-16 05:53
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
jaceyxp
初级用户





积分 21
发帖 10
注册 2007-3-30
状态 离线
『第 9 楼』:  

bjsh不愧是高手,如果我要增加如:a2,b2,c2,d2.....我要改什么?setlocal enabledelayedexpansion是什么意思?


2007-4-16 06:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 10 楼』:  

如果我要增加如:a2,b2,c2,d2.....我要改什么?
在第5行后面继续set a2=..... 修改第六行和第八行的随机数;比如你增加到了八个 把4改成8; set /a m=%random%%%4+1改为set /a m=%random%%%8+1 同时第11行的for 中的in()集合要把所有的a1.....a2...什么的加进去以空格分开;


2007-4-16 06:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
windeshadow
初级用户





积分 38
发帖 15
注册 2007-4-13
状态 离线
『第 11 楼』:  

哈哈 没看懂 有没人翻译下? set /a m=%random%%%4+1 里面面%%4是什么意思 for /f %%b in ('call echo %%%p%%%') do set "answer=%%b" %%%p%%% 这个为什么这么多%号? 哈哈要是有人翻译下 第11句就更好了


2007-4-16 12:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 12 楼』:  

setlocal enabledelayedexpansion 搜索变量延迟 set /a m=%random%%%4+1,在批处理里面%是转移字符,%%这个在命令行下面为%,就是set /a m=%random%%4+1,而set /a下面%意思为整除,所以这个就是把m的值设为一个随机数正常4后再加上1; 那么多%的原因参照上面的:%为转移字符


2007-4-16 12:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 13 楼』:  

bjsh,,关于连续赋值是 : set /a a=1,b=2,c=3,d=4 这样就把几个值给确定了。。。。




知,不觉多。不知,乃求知
2007-4-16 12:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 14 楼』:  

谢flyinspace兄


2007-4-16 21:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lililulula
中级用户





积分 302
发帖 138
注册 2007-3-29
状态 离线
『第 15 楼』:  

没看明白~~~~残念~~~~~~~


2007-4-17 04:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
<<   [1] [2]  >>   >
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: