中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [已结]批处理选择菜单问题 上一主题 | 下一主题
kookycy
初级用户





积分 41
发帖 32
注册 2008-10-16
状态 离线
『楼 主』:  [已结]批处理选择菜单问题

菜单大致如下, 以下可以选则 1 2 3 4 执行命令 但是要是输入了 5 等错误的数字后如何返回选择菜单.

代码大致如下:
@ECHO OFF

ECHO.
ECHO. 1 执行命令a
ECHO.
ECHO. 2 执行命令b
ECHO.
ECHO. 3 执行命令c
ECHO.
ECHO. 4 退 出
ECHO.
echo. 请输入选择项目的序号:
set /p ID=
if "%id%"=="1" goto cmd1

if "%id%"=="2" goto cmd2

if "%id%"=="3" goto cmd3

IF "%id%"=="4" exit

:cmd1

echo 执行命令a
cmd1.exe
exit

:cmd2

echo 执行命令b
cmd2.exe
exit

:cmd3
echo 执行命令c
cmd3.exe
exit
[ Last edited by HAT on 2008-10-20 at 22:17 ]

2008-10-18 23:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
balinger
中级用户




积分 356
发帖 115
注册 2004-7-27
状态 离线
『第 2 楼』:  

:lp
ECHO.
ECHO. 1 执行命令a
ECHO.
ECHO. 2 执行命令b
ECHO.
ECHO. 3 执行命令c
ECHO.
ECHO. 4 退 出
ECHO.
echo. 请输入选择项目的序号:
set /p ID=
if "%id%"=="1" goto cmd1

if "%id%"=="2" goto cmd2

if "%id%"=="3" goto cmd3

IF "%id%"=="4" exit
cls
goto :lp
。。。。。。。。。。。。。

2008-10-19 00:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kookycy
初级用户





积分 41
发帖 32
注册 2008-10-16
状态 离线
『第 3 楼』:  

谢谢,寒.我还一只在想要用IF 做什么样的判断语句..

- -

55555 我错了。

2008-10-19 00:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kookycy
初级用户





积分 41
发帖 32
注册 2008-10-16
状态 离线
『第 4 楼』:  

兄弟,你的方法不对啊,

你那只是一个循环到
if "%id%"=="1" goto cmd1
啊.

你自己看看

@echo off
:lp
ECHO.
ECHO. 1 执行命令a
ECHO.
ECHO. 2 执行命令b
ECHO.
ECHO. 3 执行命令c
ECHO.
ECHO. 4 退 出
ECHO.
echo. 请输入选择项目的序号c d e f:
set /p ID=
if "%id%"=="1" goto cmd1
pause
exit

if "%id%"=="2" goto cmd2
exit

if "%id%"=="3" goto cmd3
exit

IF "%id%"=="4" exit
cls
goto :lp

2008-10-19 00:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kookycy
初级用户





积分 41
发帖 32
注册 2008-10-16
状态 离线
『第 5 楼』:  

也就是说当你输入5以后的数值时 P处理只回到 CMD1

2008-10-19 00:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ccily2701
初级用户





积分 80
发帖 45
注册 2006-9-22
来自 jiangxi
状态 离线
『第 6 楼』:  

给ID赋上初值,  
set id=1
set /p id=请输入:(默认为1)

2008-10-19 09:04
查看资料  发送邮件  发短消息 网志  OICQ (27012508)  编辑帖子  回复  引用回复
HAT
版主





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

下次贴代码的时候建议加code标签

Q: 如何给代码加code标签?
A: http://www.cn-dos.net/forum/viewthread.php?tid=43735#pid304733
参考:http://www.cn-dos.net/forum/faq.php?page=misc#1



2008-10-19 11:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kookycy
初级用户





积分 41
发帖 32
注册 2008-10-16
状态 离线
『第 8 楼』:  

这样输入5以后的数字不是一样?

2008-10-19 13:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kisslbye
新手上路





积分 3
发帖 2
注册 2008-9-27
状态 离线
『第 9 楼』:  

可以用 if not 命令来判断




ECHO off
:b
cls
ECHO. 1 执行命令a
ECHO.
ECHO. 2 执行命令b
ECHO.
ECHO. 3 执行命令c
ECHO.
ECHO. 4 退 出
ECHO.
echo. 请输入选择项目的序号:
set /p ID=
if "%id%"=="1" goto cmd1

if "%id%"=="2" goto cmd2

if "%id%"=="3" goto cmd3

IF "%id%"=="4" exit
IF not "%id%"=="1,2,3,4" goto a

:cmd1

echo 执行命令a
cmd1.exe


:cmd2

echo 执行命令b
cmd2.exe


:cmd3
echo 执行命令c
cmd3.exe



:A
cls
echo 你的输入错误,请重新输入.
ping -n 3 127.1>nul
goto b

2008-10-20 07:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ccily2701
初级用户





积分 80
发帖 45
注册 2006-9-22
来自 jiangxi
状态 离线
『第 10 楼』:  

楼上兄弟很对,因为ID只有1、2、3、4的判断,所以输入“5”时候程序判断完之后会继续执行下面的操作!~

2008-10-20 09:04
查看资料  发送邮件  发短消息 网志  OICQ (27012508)  编辑帖子  回复  引用回复
kookycy
初级用户





积分 41
发帖 32
注册 2008-10-16
状态 离线
『第 11 楼』:  

感谢9楼

不过你的代码不知道你自己试过没,你编的是输入任何数字都回报错的。



同时感谢楼上的各位的帮助.


今天我已经找到方法了。借用9楼的 ping -n 3 127.1>nul

这个命令更完美了.

命令如下
ECHO off
:a
cls
ECHO. 1 执行命令a
ECHO.
ECHO. 2 执行命令b
ECHO.
ECHO. 3 执行命令c
ECHO.
ECHO. 4 退 出
ECHO.
echo. 请输入选择项目的序号:
set /p ID=
if "%id%"=="1" goto cmd1
if "%id%"=="2" goto cmd2
if "%id%"=="3" goto cmd3
IF "%id%"=="4" exit

cls
echo.
echo 你的输入错误,请重新输入.
ping -n 3 127.1>nul
goto a

:cmd1
echo 执行命令a
pause
exit

:cmd2
echo 执行命令b
pause
exit

:cmd3
echo 执行命令c
pause
exit


2008-10-20 21:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wangking2008
初级用户





积分 27
发帖 16
注册 2008-10-27
状态 离线
『第 12 楼』:  

学习

2009-2-25 23:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 13 楼』:  

@echo off
set menus="1 执行命令a" "2 执行命令b" "3 执行命令c" "4 退 出"
setlocal enabledelayedexpansion
:lp
cls
for %%a in (%menus%) do echo.&echo.%%~a
set key=&set /p key=请输入选择项目的序号:
for %%b in (%menus%) do set m=%%~b&if "!m:~0,1!"=="%key%" goto :sub%key%
goto :lp

:sub1
echo 执行命令a

goto :eof
:sub2
echo 执行命令b

goto :eof
:sub3
echo 执行命令c

goto :eof
:sub4
endlocal
exit

[ Last edited by netbenton on 2009-2-26 at 05:39 ]



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-2-26 03:01
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
jycel
初级用户




积分 75
发帖 46
注册 2007-9-25
状态 离线
『第 14 楼』:  

@echo off
CLS
COLOR 0b
MODE con: COLS=50 LINES=20
@echo.
@echo   1 执行命令a
@echo.
@echo   2 执行命令b
@echo.
@echo   3 执行命令c
@echo.
SET Choice=
SET /P Choice= 请选择(1/2/3/):
IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%
ECHO.
IF /I "%Choice%"=="1" GOTO cmd1
IF /I "%Choice%"=="2" GOTO cmd2
IF /I "%Choice%"=="3" GOTO cmd3
goto :eof

:cmd1

echo 执行命令a
cmd1.exe
exit

:cmd2

echo 执行命令b
cmd2.exe
exit

:cmd3
echo 执行命令c
cmd3.exe
exit



努力学习!我行的!
2009-2-27 07:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: