[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理中错误的环境变量值怎么还能继续运行

@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 编辑 ]

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

TOP

回复 2楼 的帖子

谢谢可行。请问一下 If "%inki%"=="" goto exit 这句有效吗

TOP

回复 3楼 的帖子

你的代码里面没有:exit标签,你想goto到哪里?

TOP

回复 3楼 的帖子

你的意思,应是这样写: If "%inki%"==""  exit

TOP

呵呵,楼上正解

TOP

非常感谢楼上各位解疑!
再问一下 If "%inki%"==""  exit “==”后面的双引号表达什么意思,是任何值吗?

TOP

回复 7楼 的帖子

表示空值

TOP

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 ,所以是退出批处理

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

TOP

返回列表