Joe*_*Fan 241 cmd batch-file logical-operators windows-console
如何在DOS批处理文件中实现逻辑运算符?
pax*_*blo 276
您可以and
使用嵌套条件:
if %age% geq 2 (
if %age% leq 12 (
set class=child
)
)
Run Code Online (Sandbox Code Playgroud)
要么:
if %age% geq 2 if %age% leq 12 set class=child
Run Code Online (Sandbox Code Playgroud)
您可以or
使用单独的变量:
set res=F
if %hour% leq 6 set res=T
if %hour% geq 22 set res=T
if "%res%"=="T" (
set state=asleep
)
Run Code Online (Sandbox Code Playgroud)
Dav*_*vis 66
该IF
语句不支持逻辑运算符(AND
和OR
),级联IF
语句构成隐式连接.
IF Exist File1.Dat IF Exist File2.Dat GOTO FILE12_EXIST_LABEL
Run Code Online (Sandbox Code Playgroud)
如果File1.Dat
和 File1.Dat
存在,则跳转标签FILE12_EXIST_LABEL
.
也可以看看: IF /?
ano*_*mal 52
De Morgan的定律允许我们仅使用连词("AND")和否定("NOT")将析取("OR")转换为逻辑等价物.这意味着我们可以将析取("OR")链接到一行.
这意味着如果名字是"Yakko"或"Wakko"或"Dot",那么回声"华纳兄弟或姐妹".
set warner=true
if not "%name%"=="Yakko" if not "%name%"=="Wakko" if not "%name%"=="Dot" set warner=false
if "%warner%"=="true" echo Warner brother or sister
Run Code Online (Sandbox Code Playgroud)
这是paxdiablo的"OR"示例的另一个版本,但条件被链接到一行.(请注意,相反leq
是gtr
,和的对面geq
是lss
).
set res=true
if %hour% gtr 6 if %hour% lss 22 set res=false
if "%res%"=="true" set state=asleep
Run Code Online (Sandbox Code Playgroud)
小智 7
OR 有点棘手,但也不过分。这是一个例子
set var1=%~1
set var2=%~2
::
set or_=
if "%var1%"=="Stack" set or_=true
if "%var2%"=="Overflow" set or_=true
if defined or_ echo Stack OR Overflow
Run Code Online (Sandbox Code Playgroud)
小智 5
以下示例说明如何制作AND语句(用于设置变量或包括命令的参数)。
要启动记事本并关闭CMD窗口,请执行以下操作:
start notepad.exe & exit
Run Code Online (Sandbox Code Playgroud)
如果变量“ a”等于等等,则将变量x,y和z设置为值。
IF "%a%"=="blah" (set x=1) & (set y=2) & (set z=3)
Run Code Online (Sandbox Code Playgroud)
希望有帮助!