中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: 关于选择问题!! 上一主题 | 下一主题
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『楼 主』:  关于选择问题!!

echo 选择1或者2
@set /p xuanzhe=
@if %xuanzhe%==1 echo 1
@if %xuanzhe%==2 echo 2
@pause
假如我选择3 我想让他提示我不可以输入3
怎么实现???

2008-6-20 12:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 2 楼』:  


@echo off
set /p select=请输入(1 2):
if "%select%" equ "1" cls&echo hello&goto end
if "%select%" equ "2" cls&echo ok&goto end
cls&echo 不可以输入%select%
:end
pause>nul




批处理之家新域名:www.bathome.net
2008-6-20 13:02
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
quya
高级用户

五星老土


积分 558
发帖 172
注册 2003-2-9
来自 江苏
状态 离线
『第 3 楼』:  

echo 选择1或者2
@set /p xuanzhe=
@if %xuanzhe%==1 echo 1 & goto end
@if %xuanzhe%==2 echo 2 & goto end
echo 你不能选择 %xuanzhe%
:end
@pause

晕,楼上比我快了几秒

[ Last edited by quya on 2008-6-20 at 01:05 PM ]



我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
2008-6-20 13:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『第 4 楼』:  

呵呵 谢谢你们 给你们看一我的想法

在单位无聊写了个玩的呵呵 请大家来完善
@title 智力测试 mbll
@color 3b
:b
@echo                    智力测试
@echo. 
@echo            你的姓名可以测试你的智商
@echo  根据古代mbll算法由国家iso2008认证本程序完全符合人体逻辑学和姓式推算学 。     不信可不试!
@echo.
@echo         准确率100
@echo.
@echo    请在输入名字时不要有空格 否则后果自负!!!
@echo.
@echo.
@set /p tmp= 你看明白了请按回车键我们开始.......
@set choose=
@set /p choose=请输入你的名字
@echo.
@echo.
@echo.
@if %choose%==李明 echo 您的智商为100  您是个天才!&goto a

@if %choose%==李俊姬 echo 您的智商为75  您的脑子很好!&goto a

@if %choose%==郭健玲 echo 您的智商为70  您可以上楼了!&goto a
@if %choose%==郑丽丽 echo 您的智商为60  您还没出院么!&goto a
@if %choose%==李莉 echo 您的智商为67  您的智商都到你儿子那去了!&goto a
@if %choose%==张海雯 echo 您的智商为0  您的智商为0 原因你自己知道吧哈哈!&goto a

@if %choose%==王威 echo 您的智商为76   您比your giriends 多一点!&goto a
@if %choose%==宁静 echo 您的智商为59  请把石头拿开!!&goto a

@echo 对不起“ %choose%” 可能不是人或正在通缉中 无法查询 !!
@echo.
@echo.
@echo.
:a
@echo.
@echo.
@echo.
@set /p tmp=要是还想试试就再来请回车键开始...
cls
@goto b

[ Last edited by mbllokmb on 2008-6-20 at 06:10 PM ]

2008-6-20 18:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『第 5 楼』:  加上了进度条呵呵

@title 智力测试 mbll
@color 3b
:b
@echo                    智力测试
@echo. 
@echo            你的姓名可以测试你的智商
@echo  根据古代mbll算法由国家iso2008认证本程序完全符合人体逻辑学和姓式推算学 。     不信可不试!
@echo.
@echo         准确率100
@echo.
@echo    请在输入名字时不要有空格 否则后果自负!!!
@echo.
@echo.
@set /p tmp= 你看明白了请按回车键我们开始.......
@set choose=
@set /p choose=请输入你的名字
@echo.
@echo.
@echo off
rem   进度条 ▉▉▉▉▉
set work=0
set n=0
set mo=0
set number=0
rem  all是总数
set all=60
set time=%all%
:show

:check
if %number% GTR %mo% set num=%num%▉&set /a mo=%mo%+1&goto check

:2

cls
echo  进度: %n% / %all%                                          剩余时间:%time%秒
echo.
echo.
echo                                  完成 %work% %%%
echo.
if not "%num%"=="" echo       %num%
if not "%num%"=="" echo       %num%
echo.
echo.
echo.
echo.
if %work%==100 goto mbll
ping 127.1 -n 1 >nul
set /a n=%n%+1
set /a time=%all%-%n%
set /a work=(%n%)*100/(%all%)
set /a number=%work%/3
set /a number=%number%+1
goto show
echo.
echo.
echo.
echo.
:mbll
echo.
@echo.
@if %choose%==李明 echo       您的智商为100  您是个天才!&goto a

@if %choose%==李俊姬 echo     您的智商为75  您的脑子很好!&goto a

@if %choose%==郭健玲 echo     您的智商为70  您可以上楼了!&goto a
@if %choose%==郑丽丽 echo     您的智商为60  您还没出院么!&goto a
@if %choose%==李莉 echo       您的智商为67  您的智商都到你儿子那去了!&goto a
@if %choose%==张海雯 echo     您的智商为0  您的智商为0 原因你自己知道吧哈哈!&goto a

@if %choose%==王威 echo      您的智商为76   您比your giriends 多一点!&goto a
@if %choose%==宁静 echo      您的智商为59  请把石头拿开!!&goto a

@echo           对不起“ %choose%” 可能不是人或正在通缉中 无法查询 !!
@echo.
@echo.
@echo.
:a
@echo.
@echo.
@echo.
@pause>nul

2008-6-20 18:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『第 6 楼』:  以上两个代码有几处不明!!!!

第一个: 结尾goto b 可我不想在让@set /p tmp= 你看明白了请按回车键我们开始.......
不想这句在循环时第二次出现了怎么实现??

第二个例子:怎么让它循环 因为一循环进度条就走样了
   请指点!!

怎么在cmd 中显示 100%  这个%号呢??

[ Last edited by mbllokmb on 2008-6-20 at 06:34 PM ]

2008-6-20 18:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 7 楼』:  

看来随便输入一个人名,显示“可能不是人或正在通缉中 无法查询 !!”信息的可能性是99%  智商指数建议用随机数~ 如果大于100 则显示天才~把“可能不是人”的信息去掉,直接显示智商多少就好了啊~



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-6-20 18:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 8 楼』:  

这样的代码太冗余,建议楼主在精简代码上狠下点功夫,这样能得到很大的提高。



批处理之家新域名:www.bathome.net
2008-6-20 18:39
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『第 9 楼』:  

第 7 楼』:  

你的想法是好的但如果写的是数字怎么为也给它值??
『第 8 楼』:  

我会努力的谢谢!

2008-6-20 19:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 10 楼』:  

@echo off
set/p name=请输入你的名字:
set t=%random%
if %t% geq 100 (echo %name%的智商为%t%,天才!) else echo %name%的智商为%t%,不是天才!
pause


你六楼的问题
在goto b前加上这样一句 set abcd=1234
在@set /p tmp= 你看明白了请按回车键我们开始....... 前加 if not defined abcd
这样第二次的时候就不会有这样的提示信息了。。。

显示%: echo %%
若是显示两个% 则是echo %%%%
PS,这是在批处理中,CMD下直接echo %就可以了

[ Last edited by pusofalse on 2008-6-20 at 11:49 PM ]



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-6-20 23:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『第 11 楼』:  

set t=%random% 这个随机数大于100是90%的机率!

为什么我的代码 名字 输入时不能空格 中间一空格就自行退出了!!!!

怎么让进度条不走样

2008-6-21 09:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『第 12 楼』:  

没人帮我看看么???

2008-6-22 07:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 13 楼』:  

每行代码前面都加@是个很不好的习惯,你把所有的@都删掉,再运行一遍程序就知道为什么遇到空格会报错了。



2008-6-22 09:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by mbllokmb at 2008-6-21 09:18:
set t=%random% 这个随机数大于100是90%的机率!

为什么我的代码 名字 输入时不能空格 中间一空格就自行退出了!!!!

怎么让进度条不走样

在你的基础上做了一些小小的更改,"%choose%"的引号不能为全角引号,在第二次循环时把num设为空值进度条就不会走样了("set num=")
复制上来的时候走样了,改一改
@echo off
title 智力测试 mbll
color 3b
:b
echo                    智力测试
echo. 
echo            你的姓名可以测试你的智商
echo  根据古代mbll算法由国家iso2008认证本程序完全符合人体逻辑学和姓式推算学 。   不信可不试!
echo.
echo         准确率100
echo.
echo    请在输入名字时不要有空格 否则后果自负!!!
echo.
echo.
set /p tmp= 你看明白了请按回车键我们开始.......
:again
echo.
set "choose="
set /p choose=请输入你的名字:
echo.
echo.
rem   进度条 ▉▉▉▉▉
set "num="
set work=0
set n=0
set mo=0
set number=0
rem  all是总数
set all=60
set time=%all%

:show
:check
if %number% GTR %mo% set num=%num%▉&set /a mo=%mo%+1&goto check

:2

cls
echo  进度: %n% / %all%                                          剩余时间:%time%秒
echo.
echo.
echo                                  完成 %work% %%%
echo.
if not "%num%"=="" echo       %num%
if not "%num%"=="" echo       %num%
echo.
echo.
echo.
echo.
if %work%==100 goto mbll
ping 127.1 -n 1 >nul
set /a n=%n%+1
set /a time=%all%-%n%
set /a work=(%n%)*100/(%all%)
set /a number=%work%/3
set /a number=%number%+1
goto show
echo.
echo.
echo.
echo.
:mbll
echo.
echo.
if "%choose%"=="李明" echo       您的智商为100  您是个天才!&goto a
if "%choose%"=="李俊姬" echo     您的智商为75  您的脑子很好!&goto a
if "%choose%"=="郭健玲" echo     您的智商为70  您可以上楼了!&goto a
if "%choose%"=="郑丽丽" echo     您的智商为60  您还没出院么!&goto a
if "%choose%"=="李莉" echo       您的智商为67  您的智商都到你儿子那去了!&goto a
if "%choose%"=="张海雯" echo     您的智商为0  您的智商为0 原因你自己知道吧哈哈!&goto a
if "%choose%"=="王威" echo      您的智商为76   您比your giriends 多一点!&goto a
if "%choose%"=="宁静" echo      您的智商为59  请把石头拿开!!&goto a
echo           对不起 "%choose%" 可能不是人或正在通缉中 无法查询 !!
echo.
echo.
echo.
:a
echo.
echo.
echo.
pause>nul&cls&goto :again
[ Last edited by moniuming on 2008-6-22 at 09:56 AM ]

2008-6-22 09:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
mbllokmb
初级用户





积分 78
发帖 39
注册 2008-6-20
状态 离线
『第 15 楼』:  还是感谢 呵呵 基本成型!大家多提意见!!

@ echo off
title 智力测试 mbll
color 3b
:a
echo                    智力测试
echo.
echo            你的姓名可以测试你的智商
echo  根据古代mbll算法由国家iso2008认证本程序完全符合人体逻辑学和姓式推算学 。       不信可不试!
echo.
echo         准确率100%%
echo.

echo.
echo.
if not defined  kiss set /p tmp= 你看明白了请按回车键我们开始.......
set "choose="
echo.
echo.
echo.
set /p          choose=            请输入你的名字:
echo.
if "%choose%"==""   (echo             别逗了,你不能直接输入回车!&pause>nul&cls&goto a) ELSE goto m
echo.
:m
rem   进度条 ▉▉▉▉▉
set "num="
set work=0
set n=0
set mo=0
set number=0
rem  all是总数
set all=60
set time=%all%

:show
:check
if %number% GTR %mo% set num=%num%▉&set /a mo=%mo%+1&goto check

:2

cls
echo  进度: %n% / %all%                                          剩余时间:%time%秒
echo.
echo.
echo                                  完成 %work% %%%
echo.
if not "%num%"=="" echo       %num%
if not "%num%"=="" echo       %num%
echo.
echo.
echo.
echo.
if %work%==100 goto n
ping 127.1 -n 1 >nul
set /a n=%n%+1
set /a time=%all%-%n%
set /a work=(%n%)*100/(%all%)
set /a number=%work%/3
set /a number=%number%+1
goto show
echo.
echo.


echo.
:n
if "%choose%"=="王平" (echo        您的智商为80  要多向你老公学习阿!&goto b) ELSE goto l
:l
if "%choose%"=="李俊姬" (echo        您的智商为75  您的脑子很好!&goto b) ELSE goto k
:k
if "%choose%"=="郭健玲" (echo        您的智商为70  您可以上楼了!&goto b) ELSE goto j
:j
if "%choose%"=="郑丽丽" (echo        您的智商为60  您还没出院么!&goto b) ELSE goto i
:i
if "%choose%"=="李莉"   (echo        您的智商为67  您的智商都到你儿子那去了!&goto b) ELSE goto h
:h
if "%choose%"=="张海雯" (echo        您的智商为0  您的智商为0 原因你自己知道吧哈哈!&goto b) ELSE goto g
:g
if "%choose%"=="李才" (echo        您有个天才儿子 我无法判断您的智商!&goto b) ELSE goto f
:f
if "%choose%"=="王威"   (echo        您的智商为76   您比your girlfriends 多一点!&goto b) ELSE goto e
:e
if "%choose%"=="宁静"   (echo        您的智商为59  请把石头拿开!!&goto b) ELSE goto d
:d
if "%choose%"=="李明" (echo        您的智商为100  您是个天才!&&goto b) ELSE goto c
:b
echo.
echo.
echo.
echo.
echo.
set /p tmp=     要是还想试试就再来!请按回车键开始...
set kiss=love&cls&goto a
:c
echo off
setlocal ENABLEDELAYEDEXPANSION

:::::::::::::::::::::变量初始化::::::::::::::::::::::

set num_s=%random%
::随机值
set num_s_w=
::随机值位数

set num_max=99
::最大值
set num_max_w=
::最大值位数

set num=
::随机数字


::::::::::::::::::::::变量初始化::::::::::::::::::::::
:SJ


call set num_s_temp=%%num_s:~0,1%%
if /i "%num_s_temp%" == "0" (set num_s=%random%&goto :sj)

call :num_w %num_s% & set num_s_w=!list!
call :num_w %num_max% & set num_max_w=!list!
::位数获取

If %num_s% LEQ %num_max% (set num=%num_s%&Goto :End)
::如果随机数字小于或等于最大值,则设置随机数字并退出。

If %num_s_w% EQU %num_max_w% (set /a num_s=%num_s%-%num_max%&Goto :SJ)

::如果 位数相同,则减去最大值。并返回判断。

IF %num_s_w% GTR %num_max_w% (
set /a w=%num_s_w%-%num_max_w%
call set num_s=%%num_s:~%w%%%
Goto :SJ
)

::如果 位数 大于 最大值位数,则截取至相同位数。并返回判断


:End

echo             您好: %choose%的智商是: %num%
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
set /p tmp=      要是还想试试就再来!请按回车键开始...
cls&set kiss=love&goto a



::#########################################################::
::#########################################################::
:num_w w
set num_w=%1
set list=

If %num_w% LSS 10 (set list=1) else (if %num_w% LSS 100 (set list=2) else (if %num_w% LSS 1000 (set list=3) else (if %num_w% LSS 10000 (set list=4) else (if %num_w% LSS 100000 (set list=5) else (set list=6)))))
Goto :eof

2008-6-22 20:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: