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

[文本处理] 批处理两个不同的条件均指向同一个结果,如何简化?

[复制链接]
发表于 2012-3-29 20:03:54 | 显示全部楼层 |阅读模式
如题:
两个不同的条件,均指向同一个结果,比如:如果a,选择AA,如果b,也选择AA。
好像以前有人提问过(or)的问题。
如下代码,当然可以实现。但假如“结果 AA”是较长的代码,势必有大段的重复,如何才能简化?
  1. @echo off
  2. ::IF A=1,Goto :AA
  3. ::IF A=2,Goto :AA
  4. ::IF A=3,Goto :CC

  5. Set /P A=请输入 [1,2,3]:

  6. If "%A%"=="1" Goto AA
  7. If "%A%"=="2" Goto AA
  8. If "%A%"=="3" Goto CC

  9. :AA
  10. Echo.&Echo.
  11. Echo That OK! This is “AA”
  12. pause
  13. exit

  14. :CC
  15. Echo.&Echo.
  16. Echo That OK! This is “CC”
  17. pause
  18. exit
复制代码
 楼主| 发表于 2012-3-29 20:13:53 | 显示全部楼层
回复 1# yuanyannian

针对上述代码,用“||”好似可行:
  1. ...
  2. If "%A%"=="1" Goto AA|| If "%A%"=="2" Goto AA
  3. ...
复制代码
但是,如果像这样:
  1. ...
  2. If "%A%"=="1" (
  3.   Echo aaaaaaa!
  4.   Echo bbbbbbb!
  5.   Echo ccccccc!
  6.   Echo ddddddd!
  7. )

  8. If "%A%"=="2" (
  9.   Echo aaaaaaa!
  10.   Echo bbbbbbb!
  11.   Echo ccccccc!
  12.   Echo ddddddd!
  13. )
  14. ...
复制代码
该如何?
发表于 2012-3-29 20:16:13 | 显示全部楼层
示例代码(n条件)

  1. @echo off
  2. set /p str=请输入:
  3. for %%a in (a b d e g i n p u z) do if /i "%str%" equ "%%a" set "flag=a"
  4. if defined flag goto next
  5. echo 输入错误
  6. pause>nul&goto :eof
  7. :next
  8. echo 输入正确
  9. pause>nul
  10.   
复制代码
 楼主| 发表于 2012-3-29 20:30:59 | 显示全部楼层
回复 3# batman

谢谢版主了,收益匪浅!

  恕我愚钝,那个 goto :eof  是何意?
发表于 2012-3-29 20:34:02 | 显示全部楼层
回复 4# yuanyannian


    goto end of file = exit
 楼主| 发表于 2012-3-29 20:38:20 | 显示全部楼层
本帖最后由 yuanyannian 于 2012-3-29 20:41 编辑

回复 5# batman

我该“潜水了”!谢谢版主!
那个 Set "flag=a" 的 a 是对应 in (a ...) 的 a 吗?
发表于 2012-3-29 20:49:18 | 显示全部楼层
回复 6# yuanyannian


   就是一个赋值,你可以把它定义成任意的值,这样做主要是为了让后面的if defined flag条件成立。。。
 楼主| 发表于 2012-3-29 21:03:30 | 显示全部楼层
回复 7# batman

今天真是感谢了,我有许多问题不懂,可否称您为老师?
发表于 2012-3-30 10:33:40 | 显示全部楼层
本帖最后由 caruko 于 2012-3-30 10:36 编辑

如果是数值的话,还是比较简单

2>nul set /a "1/(!(A-1)|!(A-2))" &&goto :AA ||goto :CC
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 22:28 , Processed in 0.018498 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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