关于批处理IF的问题

@echooffcolor0aecho1.打开记事本echo2.打开CMDecho3.打开千千静听echo4.打开KING文件夹echo5.退出:qcsetking=se... @echo off
color 0a
echo 1.打开记事本
echo 2.打开CMD
echo 3.打开千千静听
echo 4.打开KING文件夹
echo 5.退出
:qc
set king=
set /p king= 请选择:
IF NOT "%king%"=="" set king=%king:~0,1%
IF /i "%king%"=="1" goto qc1
IF /i "%king%"=="2" goto qc2
IF /i "%king%"=="3" goto qc3
IF /i "%king%"=="4" goto qc4
IF /i "%king%"=="5" exit
echo 选择无效,请重新输入!
echo.
goto qc
:qc1
start notepad
goto qc
:qc2
start cmd
goto qc
:qc3
start D:\TTPlayer\TTplayer.exe
goto qc
:qc4
start e:\movie\king\
goto qc
这是我做的一个批处理例子!在这个例子里,我是执行完以后就回到最前面了,但是回到最前面,它还会显示你上一次输入的数字,我不想让想显示,该怎么做?还有就是输入一个数字要敲回车才能运行,我想直接输入数字他就会运行,该怎么做??高手指教!!!!!!
我找到解决方法了,用别的命令可以不用敲回车就可以了,但是我不懂这句是什么意思了
IF ERRORLEVEL 1 IF NOT ERRORLEVEL 2 GOTO SERVICE1
IF ERRORLEVEL 2 IF NOT ERRORLEVEL 3 GOTO SERVICE2
这个是什么意思了???
展开
 我来答
CyraSafia
2008-12-26 · TA获得超过1940个赞
知道大有可为答主
回答量:945
采纳率:0%
帮助的人:1287万
展开全部
问题补充:
你应该是自己写了一个exe或者从别处找了个第三方的exe吧
我估计这个exe的功能是在屏幕上显示信息,然后等待键入
键入之后把键入的值作为errorlevel传递出来

言归正传
if errorlevel n (语句段)
是dos命令行中用来处理错误的语句,大部分命令或程序执行之后都会返回一个变量errorlevel
这个变量是命令行内置的变量,代表错误等级,它的正规运用是传递给dos环境命令出错的严重程度,errorlevel越高代表错误越严重,0代表没有错误

if errorlevel n成立的条件是当前的errorlevel,也就是上一条命令返回的errorlevel值大于等于n
比如if errorlevel 1 echo 出错
就是在错误等级大于等于1的时候显示"出错"

一般的错误处理都是由高到低的,比如
if errorlevel 3 goto:FatalError
if errorlevel 2 goto:Error
if errorlevel 1 goto:Warning
这是比较自然的顺序,你给出的那两个语句是反其道而行之

if语句后面的语句段可以迭代if语句,所以
IF ERRORLEVEL 1 IF NOT ERRORLEVEL 2 GOTO SERVICE1
IF ERRORLEVEL 2 IF NOT ERRORLEVEL 3 GOTO SERVICE2
可以翻译成
IF ERRORLEVEL 1 (IF NOT ERRORLEVEL 2 (GOTO SERVICE1))
IF ERRORLEVEL 2 (IF NOT ERRORLEVEL 3 (GOTO SERVICE2))
就是错误等级大于等于1,但小于2时,goto:service1
错误等级大于2,但小于3时,goto:service2

按数字直接运行是不行的吧
因为批处理归根到底是基于dos命令行的
而命令行是基于行来读取的
也就是说你不按回车就不能把你输入的内容传递给命令行

如果要消去上次的回显的话,重绘屏幕就可以了
就是每次获取完命令之后cls
再重新输出你要显示的菜单就可以了

如果用vc写的话,都可以达到
Sievers分析仪
2024-10-13 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准... 点击进入详情页
本回答由Sievers分析仪提供
BB石俊杰
2008-12-21 · TA获得超过1507个赞
知道大有可为答主
回答量:1395
采纳率:0%
帮助的人:1371万
展开全部
::我写个例子吧,自己修改用就行了。
@echo off&setlocal enabledelayedexpansion&color 0a
set s1=notepad.exe
set s2=cmd.exe
set s3=D:\TTPlayer\TTplayer.exe
:new
cls&echo 1.记事本 2.CMD 3.千千静听 &echo.
set /p n=输入数字选取
if "%n%"=="" goto new
start "" "!s%n%!"&goto new
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
喵星大魔王
2008-12-25 · TA获得超过1145个赞
知道小有建树答主
回答量:572
采纳率:0%
帮助的人:712万
展开全部
:qc
set king=
改成
:qc
cls
set king=

直接输入数字就运行这个我也尝试过多种方法,但还是无法达成
不过是多敲一下回车,也罢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wudits2004
2008-12-25 · TA获得超过107个赞
知道答主
回答量:338
采纳率:0%
帮助的人:260万
展开全部
如果不用按回车的话....
那么你要输入10的时候怎么办呢?
系统等你输入完1后再输入0吗????
还是输入1就执行了呢?
很复杂!!!!!@_@
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式