标题: [已结]批处理选择菜单问题
[打印本页]
作者: kookycy
时间: 2008-10-18 23:38
标题: [已结]批处理选择菜单问题
菜单大致如下, 以下可以选则 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 ]
作者: balinger
时间: 2008-10-19 00:08
: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
。。。。。。。。。。。。。
作者: kookycy
时间: 2008-10-19 00:14
谢谢,寒.我还一只在想要用IF 做什么样的判断语句..
- -
55555 我错了。
作者: kookycy
时间: 2008-10-19 00:18
兄弟,你的方法不对啊,
你那只是一个循环到
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
作者: kookycy
时间: 2008-10-19 00:20
也就是说当你输入5以后的数值时 P处理只回到 CMD1
作者: ccily2701
时间: 2008-10-19 09:04
给ID赋上初值,
set id=1
set /p id=请输入:(默认为1)
作者: HAT
时间: 2008-10-19 11:29
下次贴代码的时候建议加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
作者: kookycy
时间: 2008-10-19 13:11
这样输入5以后的数字不是一样?
作者: kisslbye
时间: 2008-10-20 07:53
可以用 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
作者: ccily2701
时间: 2008-10-20 09:04
楼上兄弟很对,因为ID只有1、2、3、4的判断,所以输入“5”时候程序判断完之后会继续执行下面的操作!~
作者: kookycy
时间: 2008-10-20 21:49
感谢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
作者: wangking2008
时间: 2009-2-25 23:30
学习
作者: netbenton
时间: 2009-2-26 03:01
@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 ]
作者: jycel
时间: 2009-2-27 07:59
@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