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

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

本帖最后由 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个符号,分别都是用在什么情况下的? 会有什么区别呢?
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

没有什么区别啊,看说明:
  1. IF [NOT] string1==string2 command
  2. EQU - 等于
复制代码
两者都可以用。
1

评分人数

    • CrLf: 乐于助人技术 + 5
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

if 15 equ 0xf echo 数值比较时,15等于0xf

TOP

EQU是运算符,只能比较数字
==可以比较中文字符和数字英文等符号


实际测试了。上面的2个代码,都能正确运行。

TOP

都是夜猫子。

TOP

标题

回复 5# Demon

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

回复 4# ygqiang

数值比较时,进制的不同不影响结果,所以1等于01,而以字符串比较时,只是从左向右单纯逐字对比,这时01明显比1多了个0

TOP

回复 4# ygqiang


谁说的equ只能比较数字?
1

评分人数

    • CrLf: 乐于助人PB + 3

TOP

我都搞糊涂了。

到底equ与==有什么不同呢?都用在什么场合下呢?

TOP

寒夜孤星新浪博客里有详细解释

TOP

嗯。多谢版主。

祝元旦快乐啊。

TOP

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!

TOP

基本上看懂了。

这样看来,就1楼的情况来说,用equ与==,是没有区别的。

TOP

本帖最后由 x9tiancmd 于 2012-1-4 13:27 编辑

哎'  我来说句吧!
  ==     是比较 阿思ka码及支持的字符完全等价  if /i 时相对等价 !
     右集合比较机器码
完全匹配,也就是内存寄存类型都完全一至,遇到char类寄存时 0101 和 0141  无if /i  参数时是不匹配的 有该参数 时匹配!  
  注:0101 0141char类表示 大小a  如果看成整型的话 十进制差值32
    equ  整型 单精度型
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

TOP

返回列表