标题: [原创] 详细解释批处理if命令比较两个字符串是否相等 [打印本页]
作者: lixiaodaoaaa 时间: 2008-8-12 08:46 标题: 详细解释批处理if命令比较两个字符串是否相等
注释:高手跳过,新手请跟着我学习,我也是菜鸟,希望大家把自己的心得体会
都发表上来,我们共同学习,共同提高!!!
-
- @echo off
- set /p s=请输入(1,或者2):
- if "%s%" equ "1" goto 1
- if "%s%" equ "2" goto 2
- goto end
- :1
- echo 哈哈&goto end
- :2
- echo 呵呵
- :end
- pause
复制代码
练习一下,再写一个,你看看
- @echo off
- set /p s=请输入(a或者b):
- if /i "%s%" equ "a" goto a
- if /i "%s%" equ "b" goto b
- goto end
- :a
- echo 哈哈&goto end
- :b
- echo 呵呵
- :end
- pause
复制代码
自己复制代码,自己看实验效果吧,测试成功的!哈!
其实不难的。。
解释一下哈: set /p s=请输入 (a或者b)
这个运行后,就会显示 请输入 (a或者b)
if /i "%s%" equ "a" goto a
注释,以前老不懂 equ 是什么意思,现在终于明白来哈!
equ就是等于的意思, 结合第一句,就是请把输入的值给变量s
if /i "%s%" equ "a" goto a
如果这个s值equal a,就是说s值是a的话,就跳转到a 的标签那地方
利用了goto命令,跳转,直接跳到a后面的命令的地方了。
if /i "%s%" equ "b" goto b
这个相信大家一定能够解释出来吧,就是说,如果s的值等于b ,就跳转到标签的b的地方。
写完了,也许写的不对,恳请大家批评指正,谢谢
作者: cwjvicky 时间: 2008-8-12 09:36
看了明白,就是不知道set /p s=请输入 (a或者b)的/p是什么意思
作者: pusofalse 时间: 2008-8-12 10:48 标题: 回复 2楼 的帖子
查看set/?
/p开关就是把用户输入的内容作为变量的值。
作者: batman 时间: 2008-8-12 13:22
我来说几句:
if 是批处理常用的判断语句,灵活运行用if是非常重要的。。。
if句式中的比较符是大家首先要掌握的,比效符有== lss leq equ geq gtr neq
== 就是我们平常用的等号,只是为了区别使用了两个等号
lss 小于
leq 小于等于
equ 等于
geq 大于等于
gtr 大于
neq 不等于
最要注意的一点就是比较双方加不加引号的问题,如比较的双方一定是数值的
话最好是不要加,为什么,先看示例:- @echo off
- if 5 gtr 12 (echo 5^>12) else (echo 5^<12)
- if "5" gtr "12" (echo 5^>12) else (echo 5^<12)
- pause>nul
复制代码
怎么样第二句的运行结果是不是出人意料,其实当比较双方被加上双引号后if是
把对象当作unicode字符来进行比效的,也就是按字符排序顺序来比较先后的,
5的字符排序在1后,所以第二句出来的结果就是5>12。
那么既然是这样,是不是所有的比较过程中都不要给对象加双引号呢?我们再看
一个示例:- @echo off
- set /p a=请输入值:
- if %a% neq 1 (echo no) else (echo yes)
- pause>nul
复制代码
当直接回车后,程序会报错(此时不应有1)并退出,而将双较的对象都加上双引
号后直接回车就会显示no了。所以,当比较的一方有可能值为空的时候,请给比
较的对象加上双引号。
好了,就讲这么多了,其实还有很多要注意的地方如:if /i,还是大家自己在平常
练习中多去体会和总结了。
ps:楼主这种学习的精神和态度是值得大家来效仿的。
作者: 2620286 时间: 2008-8-12 16:25
看不懂晕 有没有从0开始的教程啊
作者: AK47 时间: 2008-9-22 00:19
真是好帖,我又学会一招了
作者: mvm 时间: 2010-2-8 04:06
哇塞~太神气了~~谢谢楼主~~
作者: js588 时间: 2010-4-3 20:41
不明白的是GOTO END 是什么意思,望楼主赐教
作者: hantmite 时间: 2010-4-16 20:06
楼上 简单来说 goto end就是goto到一个定义好的命令位置,在这个代码中你可以看到:end 这就是定义好了的位置,冒号就是位置定义。这个位置你可以命名成你想要的,例如 把end换成 good 你就可以goto good 。
我的理解是这样
作者: js588 时间: 2010-4-25 21:15
新手,学习到了,谢谢楼主
作者: wangtao6312 时间: 2012-4-18 07:58
学习了,感谢你。
作者: cjiabing 时间: 2012-4-19 21:30
- 菜单与输入的经典范例:
- :input
- cls
- echo;
- set input=
- set /p input=请输入:
- if "%input%"=="" goto input
- if "%input%"=="A" echo;输入的是 A&pause
- echo;输入错误,请重试!
- pause
- goto input
复制代码
作者: luonanyun 时间: 2012-5-17 15:27
我来说几句:
if 是批处理常用的判断语句,灵活运行用if是非常重要的。。。
if句式中的比较符是大家首先要 ...
batman 发表于 2008-8-12 13:22
第二段代码我给变量%a%加上了双引号但是不管输入什么都显示的NO .......
给1加上双引号也是同样的效果!
求解答!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |