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

[其他] [已解决]在批处理中if 语句如何进行多条件判断?

[复制链接]
发表于 2020-8-31 21:34:45 | 显示全部楼层 |阅读模式
本帖最后由 qixiaobin0715 于 2020-9-1 06:07 编辑

以前看到有这样表示“与”的条件判断:
if 条件1 if 条件2 ...
那么“或”如何表达?
发表于 2020-8-31 22:04:08 | 显示全部楼层
  1. set judge=false
  2. if 条件1 set judge=true
  3. if 条件2 set judge=true
  4. if "%judge%"=="true" ...
复制代码
应该只能这样了。。。
 楼主| 发表于 2020-9-1 06:04:58 | 显示全部楼层

原来可以这样写,见识了,谢谢!!!
 楼主| 发表于 2020-9-1 09:29:12 | 显示全部楼层
回复 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" ...
复制代码

评分

参与人数 2技术 +2 收起 理由
hfstar + 1 学习了!
wujunkai + 1 长见识了

查看全部评分

 楼主| 发表于 2020-9-1 11:53:33 | 显示全部楼层
回复 2# wujunkai

用"||"连接if语句好像不行,判断语句不属于命令,所以我的想法不成立。
 楼主| 发表于 2020-9-14 12:51:55 | 显示全部楼层
本帖最后由 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" ...
复制代码
发表于 2020-9-14 18:53:11 | 显示全部楼层
回复  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. ...
复制代码
直接这样呢
 楼主| 发表于 2020-9-15 08:56:20 | 显示全部楼层
本帖最后由 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逻辑性要强一些,个人习惯而已!
谢谢!!!
 楼主| 发表于 2021-1-4 09:31:18 | 显示全部楼层
这样更简洁:
  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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 10:41 , Processed in 0.021321 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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