你如何在DOS批处理文件中实现逻辑运算符?
你如何在DOS批处理文件中实现逻辑运算符?
试试否定运算符-'not'!
好的,如果您可以使用嵌套的“if”执行“AND”操作(请参见先前的答案),那么您也可以使用“if not”执行“or”操作。
如果您还没有完全理解这个想法,请继续阅读。否则,请不要浪费时间并回到编程中。
就像嵌套的“if”只有在所有条件都为真时才满足一样,嵌套的“if not”只有在所有条件都为假时才满足。这与您想要使用“or”运算符的操作类似,是吗?
即使嵌套的“if not”中的任何一个条件为真,整个语句仍然不满足。因此,您可以连续使用否定的“if”,并记住条件语句的主体应该是您想要做的,如果您的所有嵌套条件都为false,则实际上想要给出的主体应该出现在else语句下面。
如果您仍然没有理解这件事情的要点,很抱歉,我只有16岁,这是我能做出的最好的解释。
if %v1% == a (if %v2% == b (echo yes) else echo no) else echo no
或:
if %v1% == a (echo yes) else (if %v2% == b (echo yes) else echo no)
set "A=1" & set "B=2" & call :IF_AND
set "A=1" & set "B=3" & call :IF_AND
set "A=2" & set "B=2" & call :IF_AND
set "A=2" & set "B=3" & call :IF_AND
echo.
set "A=1" & set "B=2" & call :IF_OR
set "A=1" & set "B=3" & call :IF_OR
set "A=2" & set "B=2" & call :IF_OR
set "A=2" & set "B=3" & call :IF_OR
goto :eof
:IF_OR
(if /i not %A% EQU 1 (
if /i not %B% EQU 2 (
echo FALSE-
type 2>nul
)
)) && echo TRUE+
goto :eof
:IF_AND
(if /i %A% EQU 1 (
if /i %B% EQU 2 (
echo TRUE+
type 2>nul
)
)) && echo FALSE-
goto :eof