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

[特效代码] [分享]批处理IF实现OR的一种方法

在if中实现 AND,很容易,直接嵌套就可以了..
而实现OR就很不方便了,比如要 if (A=B OR C=D) command
一般情况下,都用这种方法
if A=B (command) else (if C=D command)
这样就需要重复代码,如果在一堆很长很复杂代码中,或者还有第3,第4个条件时,复杂度就大大提高。

实际上,逻辑或在CMD中有,不错,就是set /a
如上例,可以这样
if A=B set /a m=1
if C=D set /a n=1
set /a x=m "|" n
if %x% EQU 1 command

如果有多个条件,以及嵌套,就可以这样
set /a x=(a "|" b) "&" (c "|" d)

同理,还可以实现XOR

[ 本帖最后由 caruko 于 2011-1-24 16:21 编辑 ]
1

评分人数

楼上代码确实很巧妙。。
大开眼界!

一般字符处理确实用不上那个,2楼的方法处理2个条件足够了。
可能在需要复杂判断的情况下,用数值逻辑计算代替IF的逻辑判断,可以节省大量代码,同时代码可读性也大大提高。

TOP

原帖由 hanyeguxing 于 2011-1-24 19:49 发表
条件:(区分大小写,不存在敏感字符)
变量%a%为a,%b%不为b时
或者
变量%a%为a,变量b、c、d分别为b、c、d时
或者
%d%为d-时
满足以上条件时显示ok:if "%a%"=="a" (
if not "%b%"=="b" set n==
if "%b%|% ...



不错,"%b%|%c%|%d%"=="b!c!d"很有意思,而且很直观。也很方便字符判断。
逻辑运算归根结底就是0,1运算,字符模拟确实可以做到。

[ 本帖最后由 caruko 于 2011-1-25 01:56 编辑 ]

TOP

返回列表