标题: [其他] 批处理跳转语句为何出错? [打印本页]
作者: wodesitanfu 时间: 2012-7-20 16:22 标题: 批处理跳转语句为何出错?
写了一段条件跳转语句,内容和用到的关键字都非常简单,可就是出错,b不管选择Y 或者N,脚本都不跳转,一直运行到结束。麻烦大家看下- @echo off
- echo Please input your choose(Y/N)
- set /p choose=
- if /i %choose%=="Y" goto Y
- if /i %choose%=="N" goto N
-
- :Y
- echo this is choose 1
- pause
- exit
-
- :N
- echo this is you choose 2
- pause
- exit
复制代码
作者: forfiles 时间: 2012-7-20 16:42
把N前面的:改成:
作者: 乱码 时间: 2012-7-20 17:21
- @echo off
- set /p choose=Please input your choose(Y/N):
- if /i "%choose%"=="Y" goto Y
- if /i "%choose%"=="N" goto N
- echo choose error
- pause
- exit
-
- :Y
- echo this is choose 1
- pause
- exit
-
- :N
- echo this is you choose 2
- pause
- exit
复制代码
"%choose%" 加上"
:改成:
作者: ht河豚 时间: 2012-7-20 20:28
- @echo off
- set /p choose=Please input your choose(Y/N):
- if /i "%choose%"=="Y" goto Y
- if /i "%choose%"=="N" goto N
- echo choose error
- pause
- exit
-
- :Y
- echo this is choose 1
- pause
- exit
-
- :N
- echo this is you choose 2
- pause
- exit
复制代码
要有引号哦,除非你输的时候输入"y"
作者: poter 时间: 2012-7-20 20:46
BAT里的IF判断,字符串之间的比较都要加引号。纯数之间的比较不用加
作者: wudixin96 时间: 2012-7-20 21:43
回复 5# poter
这个倒不是说字符都要加,只是如果一边加了,另一边也要加而已。
作者: poter 时间: 2012-7-21 10:46
回复 6# wudixin96
加了引号比较就是ascII的排序,你会发现a比0大
不加的话就是纯数学比较
作者: wudixin96 时间: 2012-7-21 21:36
回复 7# poter - @echo off
- if a gtr 0 echo ok
- if "a" gtr "0" echo ok
- pause
复制代码
你试试啊,有什么区别
作者: CrLf 时间: 2012-7-21 22:25
本帖最后由 CrLf 于 2012-7-21 22:37 编辑
回复 7# poter
并非比较 asc,比如 a<A<b 就是个反例,if 的字符串比较机制基于区域语言设置和代码页对应的 nls 文件,详见此帖顶楼大字部分:http://bbs.bathome.net/viewthread.php?tid=14681
回复 8# wudixin96
这样呢?- if 10 lss 9 (echo 10 lss 9) else echo not 10 lss 9
- if "10" lss "9" (echo "10" lss "9") else echo not "10" lss "9"
复制代码
作者: wudixin96 时间: 2012-7-21 22:32
回复 9# CrLf
数字来说,你加双引号当然是文本比较啦。
作者: CrLf 时间: 2012-7-21 22:35
回复 10# wudixin96
详见 plp626 的测试结果:
http://bbs.bathome.net/viewthread.php?tid=12314
作者: wudixin96 时间: 2012-7-24 13:02
这个就是你理解不对了,你把字符比较与数字比较混了。
作者: wodesitanfu 时间: 2012-7-24 15:30
高人,我真没注意到这些,不过估计有点数值类型比较的含义在里面,毕竟右边是右“”引用的,一般是指字符串类型吧,左边起码也要有类型的,虽然BAT里面没有数值类型的概念,
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |