Board logo

标题: [其他] bat中if语句使用字母还是符号做比较符? [打印本页]

作者: LTSC1809    时间: 2023-5-14 08:00     标题: bat中if语句使用字母还是符号做比较符?

我用if一直是用equ,gtr之类的字母来代表等于,大于等逻辑,但是我偶然看到论坛里有人发的代码是用双等于号"=="来比较?这样也行吗?哪种更正规一点?其他逻辑呢?大于也是两个大于号连着">>",小于也是两个小于号连着"<<"吗,这不就成了重定向符号了吗
作者: jyswjjgdwtdtj    时间: 2023-5-14 08:44

本帖最后由 jyswjjgdwtdtj 于 2023-5-14 08:52 编辑

bat不太了解 但是在c一系的语言里 ==,<,>是比较符号(返回布尔值) =是赋值符号(返回修改过后的左值)
所以说<< >>作为比较运算符肯定是错的
作者: HOPE2021    时间: 2023-5-14 08:49

回复 1# LTSC1809
If 语句的标准形式如下:
  1. IF [NOT] ERRORLEVEL number command
  2. IF [NOT] string1==string2 command
  3. IF [NOT] EXIST filename command
复制代码
启用了扩展以后如下:
  1.     IF [/I] string1 compare-op string2 command
  2.     IF CMDEXTVERSION number command
  3.     IF DEFINED variable command
  4. 其中, compare-op 可以是:
  5.     EQU - 等于
  6.     NEQ - 不等于
  7.     LSS - 小于
  8.     LEQ - 小于或等于
  9.     GTR - 大于
  10.     GEQ - 大于或等于
  11. 而 /I 开关(如果指定)说明要进行的字符串比较不分大小写。
  12. /I 开关可以用于 IF 的 string1==string2 的形式上。这些
  13. 比较都是通用的;原因是,如果 string1 和 string2 都是
  14. 由数字组成的,字符串会被转换成数字,进行数字比较。
复制代码
所以If语句的比较符只有字母比较符和"=="
作者: ashnoer    时间: 2023-5-14 08:54

我个人感觉用字母表示比较好

相较于其他语言,判断都是用 ==    !=    <=    >=  进行判断

而 Bat 里 if 好像就一个 ==  而其他的判断都是用字母表示

EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
作者: hlzj88    时间: 2023-5-14 09:40

个人理解: 大于 小于 适用于数字比较,按同一类型 equ neq 也是用于数字比较的。==更偏向字符串,字母、汉字等的的比较。
作者: Batcher    时间: 2023-5-14 10:34

回复 1# LTSC1809


if的帮助文档里面没有">>"和"<<",还是得以帮助文档为基础。
作者: LTSC1809    时间: 2023-5-14 22:04

回复 6# Batcher 话是这样说,但是我在cmd中输入if /?给出的帮助也没有双等于号,只有equ,gtr这些字母,那为什么双等于号能用呢
作者: LTSC1809    时间: 2023-5-14 22:05

回复 5# hlzj88 但是我用equ比较字符串也能用,没有报错
作者: Batcher    时间: 2023-5-14 22:43

回复 7# LTSC1809


    再仔细看看帮助文档有没有==吧,实在看不到就算了,不必太纠结。
作者: czjt1234    时间: 2023-5-15 09:37

  1. if /?
复制代码
是有==的

3楼已经说得很清楚了




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2