Board logo

标题: [其他] 批处理中错误的环境变量值怎么还能继续运行 [打印本页]

作者: 愚无尽    时间: 2008-8-9 22:04     标题: 批处理中错误的环境变量值怎么还能继续运行

@echo off
color 0b
title 呵呵
:menu
cls
echo ==============================================================================
Set /p in= 请输入:
If "%in%"=="" goto menu
If "%in%"=="1" Goto ki
If "%in%"=="2" Goto do
If "%in%"=="3" Goto st
If "%in%"=="4" Goto cl
If "%in%"=="0" Exit

:ki
Set /p inki=执行代码:
If "%inki%"=="" goto exit
If "%inki%"=="kdl" Goto kdl

:kdl
echo 成功执行
pause>nul
goto menu

问题:“执行代码”输入其他字符,怎么还会继续执行 :kdl ?需要的是输入错误的时候就退出,帮忙

[ 本帖最后由 愚无尽 于 2008-8-9 22:34 编辑 ]
作者: more    时间: 2008-8-9 22:27

在后面加上exit
:ki
Set /p inki=执行代码:
If "%inki%"=="" goto exit
If "%inki%"=="kdl" Goto kdl
exit

作者: 愚无尽    时间: 2008-8-9 22:46     标题: 回复 2楼 的帖子

谢谢可行。请问一下 If "%inki%"=="" goto exit 这句有效吗
作者: Batcher    时间: 2008-8-10 00:47     标题: 回复 3楼 的帖子

你的代码里面没有:exit标签,你想goto到哪里?
作者: shqf    时间: 2008-8-10 10:13     标题: 回复 3楼 的帖子

你的意思,应是这样写: If "%inki%"==""  exit
作者: youxi01    时间: 2008-8-10 10:50

呵呵,楼上正解
作者: 愚无尽    时间: 2008-8-10 10:54

非常感谢楼上各位解疑!
再问一下 If "%inki%"==""  exit “==”后面的双引号表达什么意思,是任何值吗?
作者: Batcher    时间: 2008-8-11 02:10     标题: 回复 7楼 的帖子

表示空值
作者: lovelymorning    时间: 2008-8-12 10:04

goto 标签

如果goto 后面的标签不存在,就表示退出,所以,在批处理中,并不是exit才能退出,任何一个没有经过 :   定义的标签均可退出批处理

Set /p inki=执行代码:
If "%inki%"=="" goto exit
If "%inki%"=="kdl" Goto kdl

:kdl
echo 成功执行
pause>nul
goto menu


在你那输入后面,也就是 if 后面没有任何返回或退出的代码,批处理在两条if之后,因为没有中止代码,所以继续执行,也就是说,不管你那里输入的是什么,最终还是会执行下面的    成功执行

If "%inki%"=="" goto exit

这句的意思是   当用户直接回车而没有输入任何字符时,goto exit ,而你没有定义 exit ,所以是退出批处理

两个引号间没有任何内容,表示空值,也就是什么也没有




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2