中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 这个多选择批处理要如何完美实现...求助~~~(在线等_)~
« [1] [2] [3] »
作者:
标题: 这个多选择批处理要如何完美实现...求助~~~(在线等_)~ 上一主题 | 下一主题
baepyygy
初级用户





积分 142
发帖 61
注册 2006-6-1
状态 离线
『楼 主』:  这个多选择批处理要如何完美实现...求助~~~(在线等_)~

代码:
@echo off
color e
set /p ok=请选择存档服务器(1-5):
if "%ok%"== "1" goto server1
if "%ok%"== "2" goto server2
if "%ok%"== "3" goto server3
if "%ok%"== "4" goto server4
if "%ok%"== "5" goto server5

:server1
if exist GameSave1 (Start GameSave1\svClient.exe) else @echo 选择的存档服务器不存在,请重新选择....
pause
cls
call run.bat
pause
goto end

:server2
if exist GameSave2 (Start GameSave2\svClient.exe) else @echo 选择的存档服务器不存在,请重新选择....
call run.bat
pause
cls
pause
goto end

:server3
if exist GameSave3 (Start GameSave3\svClient.exe) else @echo 选择的存档服务器不存在,请重新选择....
pause
cls
call run.bat
pause
goto end


:server4
if exist GameSave4 (Start GameSave4\svClient.exe) else @echo 选择的存档服务器不存在,请重新选择....
pause
cls
call run.bat
pause
goto end

:server5
if exist GameSave5 (Start GameSave5\svClient.exe) else @echo 选择的存档服务器不存在,请重新选择....
pause
cls
call run.bat
pause
goto end
:end
exit

问题是当用户选择的按键是非1-5的时候,如何给出"服务器不存在的提示,按任意键继续"的提示...现在是除1-5外的任意键都会默认打开第一个储存服务器.
该如何做....
另外,有没有更好的方法来实现这个批处理所实现的功能!~~~~

[ Last edited by baepyygy on 2006-11-21 at 09:45 AM ]

2006-11-21 06:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
IceCrack
中级用户

DOS之友


积分 332
发帖 168
注册 2005-10-6
来自 天涯
状态 离线
『第 2 楼』:  

if "%ok%"== "1" goto server1
if "%ok%"== "2" goto server2
if "%ok%"== "3" goto server3
if "%ok%"== "4" goto server4
if "%ok%"== "5" goto server5
goto wrong
:wrong
echo 服务器不存在
echo 按任意键继续
>nul pause
call run.bat


你这个程序可以不用call的,在最开头的地方加上一个
cls
:start
后面用到call的语句都换成goto就行了



测试环境: windows xp pro sp2    高手是这样炼成的:C:\WINDOWS\Help\ntcmds.chm
2006-11-21 08:02
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (369525996)  编辑帖子  回复  引用回复
baepyygy
初级用户





积分 142
发帖 61
注册 2006-6-1
状态 离线
『第 3 楼』:  

能不能完整的写出来。。。有点不太明白~~

2006-11-21 08:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
baepyygy
初级用户





积分 142
发帖 61
注册 2006-6-1
状态 离线
『第 4 楼』:  

@echo off
color e
cls
set /p ok=请选择存档服务器(1-5):
if "%ok%"== "1" goto server1
if "%ok%"== "2" goto server2
if "%ok%"== "3" goto server3
if "%ok%"== "4" goto server4
if "%ok%"== "5" goto server5

:server1
if exist GameSave1 (Start GameSave1\svClient.exe) else goto wrong
pause
cls
pause
goto end

:server2
if exist GameSave2 (Start GameSave2\svClient.exe) else goto wrong
pause
cls
pause
goto end

:server3
if exist GameSave3 (Start GameSave3\svClient.exe) else goto wrong
pause
cls
pause
goto end


:server4
if exist GameSave4 (Start GameSave4\svClient.exe) else goto wrong
pause
cls
pause
goto end

:server5
if exist GameSave5 (Start GameSave5\svClient.exe) else goto wrong
pause
cls
pause
goto end

goto wrong

:wrong
echo 服务器不存在
echo 按任意键继续
>nul pause
goto start

:start
start run.bat

:end
exit

这样,非数字键时默认还是到SERVER1处。。

2006-11-21 09:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





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

楼上的这样能做到吗?

2006-11-21 09:42
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
baepyygy
初级用户





积分 142
发帖 61
注册 2006-6-1
状态 离线
『第 6 楼』:  

哎。。所以才向大家请教啊

2006-11-21 09:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  


@echo off
color e
:start
cls
set /p ok=请选择存档服务器(1-5):
if %ok% geq 1 if %ok% leq 5 (
        if exist GameSave%ok% (Start GameSave%ok%\svClient.exe) else (goto wrong)
) else (goto wrong)
goto :eof

:wrong
echo 服务器不存在
echo 按任意键继续
>nul pause
goto start
   未测试,不知道对不对,有问题请跟帖继续讨论。


   此帖被 +2 点积分     点击查看详情   
评分人:【 redtek 分数: +2  时间:2006-11-21 11:59


2006-11-21 10:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baepyygy
初级用户





积分 142
发帖 61
注册 2006-6-1
状态 离线
『第 8 楼』:  

刚在机器上试了下,暂时没问题。。。。明天换台机继续试下。。。

能不能把整段代码的含义解释一下??

2006-11-21 10:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
anqing
高级用户




积分 859
发帖 413
注册 2006-8-14
状态 离线
『第 9 楼』:  

lx的代码果然精简,厉害!

2006-11-21 10:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baepyygy
初级用户





积分 142
发帖 61
注册 2006-6-1
状态 离线
『第 10 楼』:  

要解释下就能更好了。。。。有点看不明白~!~

2006-11-21 10:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tao0610
高级用户

朦胧的世界


积分 579
发帖 218
注册 2006-10-24
状态 离线
『第 11 楼』:  


echo off&color e
:start
cls
set /p ok=请选择存档服务器(1-5):
if exist GameSave%ok% Start GameSave%ok%\svClient.exe&&goto :eof

echo 选择的存档服务器不存在,请重新选择.... &pause >nul
goto start


   此帖被 +1 点积分    点击查看详情   
评分人:【 redtek 分数: +1  时间:2006-11-24 07:30





认识自己,降伏自己,改变自己
,才能改变别人!
2006-11-21 14:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
srleopard
初级用户





积分 29
发帖 15
注册 2006-11-21
状态 离线
『第 12 楼』:  

LX写的太好了,很受启发呀

2006-11-22 02:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baepyygy
初级用户





积分 142
发帖 61
注册 2006-6-1
状态 离线
『第 13 楼』:  

还有个问题,我在输入“0”的时候,程序会退出。而且在输入“1.”时,程序也会执行。。。

2006-11-22 08:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by baepyygy at 2006-11-22 08:51:
还有个问题,我在输入“0”的时候,程序会退出。而且在输入“1.”时,程序也会执行。。。


  你说的是几楼的代码出现这种情况?


2006-11-22 09:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baepyygy
初级用户





积分 142
发帖 61
注册 2006-6-1
状态 离线
『第 15 楼』:  

就你写的。。。。。。。我在按0的时候就退出。1.的时候还是程序执行

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


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



论坛跳转: