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

[系统相关] [已解决]批处理if中,== 与equ 这2个,在什么情况下会有区别?

[复制链接]
发表于 2011-12-31 23:04:29 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2017-6-8 21:01 编辑
  1. rem 获取本机ip
  2. for /f "tokens=14 delims=: " %%b in ('ipconfig^|find /i "ip"') do set fsip=%%b
  3. echo %fsip%
  4. pause

  5. if "%fsip%" equ "10.10.9.200" (
  6.     goto :set0
  7. ) else if "%fsip%" equ "10.10.93.100" (
  8.     goto :set0
  9. ) else if "%fsip%" equ "10.10.94.200" (
  10.     goto :set0
  11. ) else if "%fsip%" equ "10.10.127.200" (
  12.     goto :set0
  13. )
  14. goto :set1
复制代码
  1. rem 获取本机ip
  2. for /f "tokens=14 delims=: " %%b in ('ipconfig^|find /i "ip"') do set fsip=%%b
  3. echo %fsip%
  4. pause

  5. if "%fsip%" == "10.10.9.200" (
  6.     goto :set0
  7. ) else if "%fsip%" == "10.10.93.100" (
  8.     goto :set0
  9. ) else if "%fsip%" == "10.10.94.200" (
  10.     goto :set0
  11. ) else if "%fsip%" == "10.10.127.200" (
  12.     goto :set0
  13. )
  14. goto :set1
复制代码
上面这2个代码,在什么情况下,会有不同的执行效果?

或者说:,== 与equ 这2个符号,分别都是用在什么情况下的? 会有什么区别呢?

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2012-1-1 00:39:13 | 显示全部楼层
没有什么区别啊,看说明:
  1. IF [NOT] string1==string2 command
  2. EQU - 等于
复制代码
两者都可以用。

评分

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

查看全部评分

发表于 2012-1-1 00:59:31 | 显示全部楼层
if 15 equ 0xf echo 数值比较时,15等于0xf
 楼主| 发表于 2012-1-1 01:02:07 | 显示全部楼层
EQU是运算符,只能比较数字
==可以比较中文字符和数字英文等符号


实际测试了。上面的2个代码,都能正确运行。
发表于 2012-1-1 01:10:19 | 显示全部楼层
都是夜猫子。
发表于 2012-1-1 01:30:01 | 显示全部楼层

标题

回复 5# Demon

呵呵,被窝里玩手机呢,中午睡过头了。

回复 4# ygqiang

数值比较时,进制的不同不影响结果,所以1等于01,而以字符串比较时,只是从左向右单纯逐字对比,这时01明显比1多了个0
发表于 2012-1-1 09:53:52 | 显示全部楼层
回复 4# ygqiang


谁说的equ只能比较数字?

评分

参与人数 1PB +3 收起 理由
CrLf + 3 乐于助人

查看全部评分

 楼主| 发表于 2012-1-1 11:29:52 | 显示全部楼层
我都搞糊涂了。

到底equ与==有什么不同呢?都用在什么场合下呢?
发表于 2012-1-1 11:32:54 | 显示全部楼层
寒夜孤星新浪博客里有详细解释
 楼主| 发表于 2012-1-1 11:34:59 | 显示全部楼层
嗯。多谢版主。

祝元旦快乐啊。
 楼主| 发表于 2012-1-1 11:41:08 | 显示全部楼层
http://blog.sina.com.cn/s/blog_51a4af870100f6bl.html

== 与 EQU 之间的区别:



  作为初学者,很容易将 == 与 EQU 混淆的认为他们一样,其实这是不对的。== 是用来比较相同的,换句话说,就是比较字符串是否完全相同的。而 EQU 是比较运算符,含有运算的功能,换句话说,是可以在比较之前转换数字为对应的数值,然后再比较。

  既然说到了数值,我们就扩展讲一下:数值是指十进制的数字,在前缀加 0× (这里x忽略大小写)则表示十六进制数字,加 0 则表示八进制数字。因此,0x12 与 18 相同,也与 022 相同,八进制表示法容易引起混淆。例如,08 和 09 不是有效数字,因为 8 和 9 不是有效的八进制数字。

  所以,在使用 == 比较时,0x12、022和18是不相等的,但在使用 EQU 比较时,他们是相等的,因为他们对应的数值都是18!
 楼主| 发表于 2012-1-1 11:41:46 | 显示全部楼层
基本上看懂了。

这样看来,就1楼的情况来说,用equ与==,是没有区别的。
发表于 2012-1-4 13:14:20 | 显示全部楼层
本帖最后由 x9tiancmd 于 2012-1-4 13:27 编辑

哎'  我来说句吧!
  ==     是比较 阿思ka码及支持的字符完全等价  if /i 时相对等价 !
     右集合比较机器码
完全匹配,也就是内存寄存类型都完全一至,遇到char类寄存时 0101 和 0141  无if /i  参数时是不匹配的 有该参数 时匹配!  
  注:0101 0141char类表示 大小a  如果看成整型的话 十进制差值32
    equ  整型 单精度型
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 03:59 , Processed in 0.023407 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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