找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 35319|回复: 8

[其他] 批处理if...else...goto为何跳转失败?

[复制链接]
发表于 2011-11-2 17:00:24 | 显示全部楼层 |阅读模式
  1. @echo off

  2. set /p input=输入开启的版本(sp2 sp3 sp4):
  3. if "%input%"=="sp2" goto sp2 else (
  4. if "%input%"=="sp3" goto sp3 else(
  5. if "%input%"=="sp4" goto sp4 else goto other))
  6. pause

  7. :sp2
  8. echo sp2 OK
  9. pause
  10. exit


  11. :sp3
  12. echo sp3 ok
  13. pause
  14. exit

  15. :sp4
  16. echo sp4 ok
  17. pause
  18. exit

  19. :other
  20. echo other ok
  21. pause
  22. exit
复制代码
输入其它的没有跳转到other这里的输出,这是为什么?
发表于 2011-11-2 19:17:02 | 显示全部楼层

  1. @echo off

  2. set /p input=输入开启的版本(sp2 sp3 sp4):
  3. if "%input%"=="sp2" goto sp2
  4. if "%input%"=="sp3" goto sp3
  5. if "%input%"=="sp4" goto sp4
  6. echo other ok
  7. pause
  8. exit

  9. :sp2
  10. echo sp2 OK
  11. pause
  12. exit


  13. :sp3
  14. echo sp3 ok
  15. pause
  16. exit

  17. :sp4
  18. echo sp4 ok
  19. pause
复制代码
发表于 2011-11-2 20:19:15 | 显示全部楼层
回复 1# error1
必须牢记if...else...的句型:if ... (...) else ...,就是说如果要接else,前面的括号是一定不能少的。
 楼主| 发表于 2011-11-3 11:24:37 | 显示全部楼层
lvsehuaxue 发表于 2011-11-2 19:17



    这样输入其它的确实是可以得出other ok
但我要用goto的本意是,如果输入的是其它值,就跳到开始询问开启的版本号。
想知道为什么这里最后没有执行else语句。
 楼主| 发表于 2011-11-3 11:26:12 | 显示全部楼层
回复  error1
必须牢记if...else...的句型:if ... (...) else ...,就是说如果要接else,前面的括号是一 ...
weichenxiehou 发表于 2011-11-2 20:19



    前面有带括号啊,难道是“()”位置不对?可以就上面的那段给出正解么?谢谢
发表于 2011-11-3 12:59:01 | 显示全部楼层
我的意思是条件满足时要做的事情那部分需要加括号,也就是你那些goto…
 楼主| 发表于 2011-11-3 17:14:56 | 显示全部楼层
我的意思是条件满足时要做的事情那部分需要加括号,也就是你那些goto…
weichenxiehou 发表于 2011-11-3 12:59
  1. if "%input%"=="sp2" goto sp2
  2. if "%input%"=="sp3" goto sp3
  3. if "%input%"=="sp4" goto sp4
  4. goto other
复制代码
哦,我改成这样了。。。
发表于 2011-11-3 23:48:47 | 显示全部楼层
最简单的就如楼上,否则就复杂了。

  1. set /p input=输入开启的版本(sp2 sp3 sp4):
  2. if "%input%"=="sp2" (goto sp2) else (
  3.     if "%input%"=="sp3" (goto sp3) else (
  4.         if "%input%"=="sp4" (goto sp4) else goto other
  5.     )
  6. )
  7. pause
  8. exit
复制代码
有两个基本问题:
第一是基本语法不对,在else前面的命令是要用括号的。
第二是if "%input%"=="sp3" goto sp3 else(最后面这个else和(粘到一起了,要分开。
另外,使用IF判断时,有时候单行的逐一判断是最简便的,而不必使用if …… else ……的模式。

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-11-4 11:41:28 | 显示全部楼层
最简单的就如楼上,否则就复杂了。有两个基本问题:
第一是基本语法不对,在else前面的命令是要用括号的。 ...
cjiabing 发表于 2011-11-3 23:48



    谢谢,记住了。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:55 , Processed in 0.021556 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表