Board logo

标题: [其他] [已解决]在批处理中if 语句如何进行多条件判断? [打印本页]

作者: qixiaobin0715    时间: 2020-8-31 21:34     标题: [已解决]在批处理中if 语句如何进行多条件判断?

本帖最后由 qixiaobin0715 于 2020-9-1 06:07 编辑

以前看到有这样表示“与”的条件判断:
if 条件1 if 条件2 ...
那么“或”如何表达?
作者: wujunkai    时间: 2020-8-31 22:04

  1. set judge=false
  2. if 条件1 set judge=true
  3. if 条件2 set judge=true
  4. if "%judge%"=="true" ...
复制代码
应该只能这样了。。。
作者: qixiaobin0715    时间: 2020-9-1 06:04


原来可以这样写,见识了,谢谢!!!
作者: qixiaobin0715    时间: 2020-9-1 09:29

回复 2# wujunkai

如果条件较多,这样的话效率应当高一些:
  1. set judge=false
  2. if 条件1 set judge=true || if 条件2 set judge=true || if 条件3 set judge=true ...
  3. if "%judge%"=="true" ...
复制代码

作者: qixiaobin0715    时间: 2020-9-1 11:53

回复 2# wujunkai

用"||"连接if语句好像不行,判断语句不属于命令,所以我的想法不成立。
作者: qixiaobin0715    时间: 2020-9-14 12:51

本帖最后由 qixiaobin0715 于 2020-9-14 14:10 编辑

回复 2# wujunkai
老大,这样应当可以吧:
  1. set judge=false
  2. if 条件1 set judge=true&goto abc
  3. if 条件2 set judge=true&goto abc
  4. if 条件3 set judge=true&goto abc
  5. ...
  6. if 条件n set judge=true&goto abc
  7. :abc
  8. if "%judge%"=="true" ...
复制代码

作者: terse    时间: 2020-9-14 18:53

回复  wujunkai
老大,这样应当可以吧:
qixiaobin0715 发表于 2020-9-14 12:51


那还不如
  1. if 条件1 goto abc
  2. if 条件2 goto abc
  3. if 条件3 goto abc
  4. ...
  5. if 条件n goto abc
  6. goto :eof
  7. :abc
  8. ...
复制代码
直接这样呢
作者: qixiaobin0715    时间: 2020-9-15 08:56

本帖最后由 qixiaobin0715 于 2020-9-15 10:43 编辑

回复 7# terse

都可以。判断条件后不能退出批处理,跳转到下面的语句继续执行,以下是两个简单的例子:
  1. @echo off
  2. set /p str=请输入字母a或b或c:
  3. if "%str%" == "a" set judge=true&goto abc
  4. if "%str%" == "b" set judge=true&goto abc
  5. if "%str%" == "c" set judge=true&goto abc
  6. :abc
  7. if "%judge%" == "true" (
  8.     echo 你输入的是字母:%str%
  9. ) else (
  10.     echo 你输入的字母不是abc中的任何一个
  11. )
  12. echo 欢迎再次光临
  13. pause
复制代码
  1. @echo off
  2. set /p str=请输入字母a或b或c:
  3. if "%str%" == "a" goto abc
  4. if "%str%" == "b" goto abc
  5. if "%str%" == "c" goto abc
  6. echo 你输入的字母不是abc中的任何一个
  7. goto cba
  8. :abc
  9. echo 你输入的是字母:%str%
  10. :cba
  11. echo 欢迎再次光临
  12. pause
复制代码
用if...else逻辑性要强一些,个人习惯而已!
谢谢!!!
作者: qixiaobin0715    时间: 2021-1-4 09:31

这样更简洁:
  1. @echo off
  2. set /p str=请输入字母a或b或c:
  3. echo %str%|findstr [a-c]>nul&&echo 你输入的是字母:%str%||if "%str%"=="" (echo 你没有输入任何字符) else echo 你输入的字符不是abc中的任何一个
  4. echo 欢迎再次光临
  5. pause
复制代码





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