中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-26 02:06
47,812 主题排行 / 349,910 发帖 / 今日 0 篇 / 48,264 会员排行
DOS批处理 & 脚本技术(批处理室) » 批处理中判断用户的输入是否是一指定数值的方法
可打印版本  1,331 / 9
第1楼 vkill 发表于 2007-04-09 09:33
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
批处理中判断用户的输入是否是一指定数值的方法
欢迎测试......

第2楼 vkill 发表于 2007-04-09 09:42
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
用set/p fc 来解决特殊字符

要求输入为 这个变量直接set 和 set/p=<life 来获取是有差别的
第3楼 3391617 发表于 2007-04-09 10:28
初级用户 发帖 56 积分 116
先秘下,再研究。。。。。。
第4楼 flyinspace 发表于 2007-04-09 22:01
银牌会员 发帖 517 积分 1,206
你这段代码要做什么?

看不明白??
第5楼 xxbsxg 发表于 2007-04-09 23:03
新手上路 发帖 4 积分 7
非常有用的,真是太谢谢了。
第6楼 vkill 发表于 2007-04-10 01:52
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
Originally posted by flyinspace at 2007-4-9 22:01:
你这段代码要做什么?

看不明白??

呵呵,你要用的时候就知道了,可以防止 输入特殊字符 而导致错误退出
第7楼 qzwqzw 发表于 2007-05-29 19:47
银牌会员 发帖 636 积分 2,343
研究性的代码请加上必要的注释

尤其是比较生僻和古怪的用法

因为没有人会乐意重现你的反复思考的过程

也会浪费许多的精力和帖子去讨论一些已经有结果的问题

-------------------------------

现在大概明白的你的核心思想

是将输入串和验证串分别写入两个临时文件

然后用fc进行文件比较

----------------------------------------

还有几个问题不明白

set/p=输入:<nul&set/p "v= "的用意何在?
为什么不用 set/p v=输入:

set v|findstr "^v="|more>"%temp%\a.txt"
其中的more起什么作用?
如果将变量名改为$v、_v等不可能被重复的临时名
是否可以避免findstr/more的使用?

显示输入结果的时候
为什么不直接显示变量v
而是通过lv从文件a.txt中读取呢?

另外对你的显示输出习惯很不适应
看的很别扭
第8楼 vkill 发表于 2007-05-29 20:23
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
Originally posted by qzwqzw at 2007-5-29 19:47:
研究性的代码请加上必要的注释

尤其是比较生僻和古怪的用法

因为没有人会乐意重现你的反复思考的过程

也会浪费许多的精力和帖子去讨论一 ...

回 qzwqzw 兄:
关于研究性的代码请加上必要的注释这个,我在2楼给了提示的了,我想应该没有问题

关于set/p=输入:<nul&set/p "v= "的用意何在?为什么不用 set/p v=输入:
这个只是我写的习惯,呵呵,见凉

关于 改为$v、_v等不可能被重复的临时名 这个,我只是想用下 set v|findstr 这个很有用的,这个一般很少用,所以特别提下

关于直接显示变量v ,要是v中有 & =特殊字符我想不可以,不过我没有试
第9楼 pighead123 发表于 2007-05-29 21:20
初级用户 发帖 23 积分 42
用findstr ^$ 呵呵



@echo off
rem 谢谢zzzevazzz对代码的改进
rem 关于 set errorlevel=>nul set password=>nul 我还是选择了保留 这样避免其他程序
rem 如果调用这两个变量 会引起错误 ^password=ph4nt0m$的办法很好 我原来是想用sort
rem 进行顺序的调配 看来现在这个地方还是用zzzevazzz的方法比较好 sort 我就用在其他地方吧
rem the key.bat made by ALLyeSNO
cls
:allyesno
set errorlevel=>nul
echo 请输入登录口令
set password=allyesno is a pig>nul
set/p password=
set password|findstr "^password=ph4nt0m$"
if "%errorlevel%"=="0" echo 口令正确&goto end
echo 口令错误&goto allyesno
:end
set password=>nul
set errorlevel=>nul
echo 你成功登录系统


[ Last edited by pighead123 on 2007-5-29 at 09:23 PM ]
第10楼 qzwqzw 发表于 2007-05-29 22:05
银牌会员 发帖 636 积分 2,343
关于研究性的代码请加上必要的注释这个,我在2楼给了提示的了,我想应该没有问题
--------------
别把大家看得水平与你一样高
反正我是看得一头雾水,包括你的提示
搞得跟算命老头泄露盖世天机一样
刚开始还把set/p fc当成一个命令
现在才看出是两个,无语


关于set/p=输入:<nul&set/p "v= "的用意何在?为什么不用 set/p v=输入:
这个只是我写的习惯,呵呵,见凉
--------------
天哪!我为这个琢磨了半天呢
想谋杀我的脑细胞也不是这样干的呀?


关于 改为$v、_v等不可能被重复的临时名 这个,我只是想用下 set v|findstr 这个很有用的,这个一般很少用,所以特别提下
--------------
一般很少用,那就说明很少有用
所以除非有特别的目的,否则不要使用这个又累又怪的用法


关于直接显示变量v ,要是v中有 & =特殊字符我想不可以,不过我没有试
--------------
再次无语,就因为“我想不可以”,就有舍近求远,难以理解!
起码应该给出直接显示导致失败的例子嘛


总的来说
你的代码从头到尾我都看得很别扭
风格是一方面,习惯是一方面
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023