中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-17 08:38
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 这个多选择批处理要如何完美实现...求助~~~(在线等_)~ 查看 3,202 回复 32
楼 主 这个多选择批处理要如何完美实现...求助~~~(在线等_)~ 发表于 2006-11-21 06:54 ·  中国 广东 深圳 电信
初级用户
★★
积分 142
发帖 61
注册 2006-06-01 19:41
UID 56391
性别 男
状态 离线
代码:
@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 ]
2 发表于 2006-11-21 08:02 ·  中国 辽宁 大连 教育网
中级用户
★★
DOS之友
积分 332
发帖 168
注册 2005-10-06 00:00
UID 43171
性别 男
来自 天涯
状态 离线
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
3 发表于 2006-11-21 08:16 ·  中国 广东 深圳 罗湖区 电信
初级用户
★★
积分 142
发帖 61
注册 2006-06-01 19:41
UID 56391
性别 男
状态 离线
能不能完整的写出来。。。有点不太明白~~
4 发表于 2006-11-21 09:38 ·  中国 广东 深圳 罗湖区 电信
初级用户
★★
积分 142
发帖 61
注册 2006-06-01 19:41
UID 56391
性别 男
状态 离线
@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处。。
5 发表于 2006-11-21 09:42 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
楼上的这样能做到吗?
6 发表于 2006-11-21 09:42 ·  中国 广东 深圳 罗湖区 电信
初级用户
★★
积分 142
发帖 61
注册 2006-06-01 19:41
UID 56391
性别 男
状态 离线
哎。。所以才向大家请教啊
7 发表于 2006-11-21 10:44 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线


@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

   未测试,不知道对不对,有问题请跟帖继续讨论。
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +2 2006-11-21 11:59
8 发表于 2006-11-21 10:49 ·  中国 广东 深圳 罗湖区 电信
初级用户
★★
积分 142
发帖 61
注册 2006-06-01 19:41
UID 56391
性别 男
状态 离线
刚在机器上试了下,暂时没问题。。。。明天换台机继续试下。。。

能不能把整段代码的含义解释一下??
9 发表于 2006-11-21 10:53 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
UID 60532
状态 离线
lx的代码果然精简,厉害!
10 发表于 2006-11-21 10:55 ·  中国 广东 深圳 罗湖区 电信
初级用户
★★
积分 142
发帖 61
注册 2006-06-01 19:41
UID 56391
性别 男
状态 离线
要解释下就能更好了。。。。有点看不明白~!~
11 发表于 2006-11-21 14:24 ·  中国 北京 朝阳区 联通
高级用户
★★
朦胧的世界
积分 579
发帖 218
注册 2006-10-24 04:29
UID 67972
状态 离线

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

认识自己,降伏自己,改变自己
,才能改变别人!
12 发表于 2006-11-22 02:01 ·  中国 江西 上饶 电信
初级用户
积分 29
发帖 15
注册 2006-11-21 09:35
UID 71243
性别 男
状态 离线
LX写的太好了,很受启发呀
13 发表于 2006-11-22 08:51 ·  中国 广东 深圳 罗湖区 电信
初级用户
★★
积分 142
发帖 61
注册 2006-06-01 19:41
UID 56391
性别 男
状态 离线
还有个问题,我在输入“0”的时候,程序会退出。而且在输入“1.”时,程序也会执行。。。
14 发表于 2006-11-22 09:13 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
Originally posted by baepyygy at 2006-11-22 08:51:
还有个问题,我在输入“0”的时候,程序会退出。而且在输入“1.”时,程序也会执行。。。


  你说的是几楼的代码出现这种情况?
15 发表于 2006-11-22 09:16 ·  中国 广东 深圳 罗湖区 电信
初级用户
★★
积分 142
发帖 61
注册 2006-06-01 19:41
UID 56391
性别 男
状态 离线
就你写的。。。。。。。我在按0的时候就退出。1.的时候还是程序执行
论坛跳转: