DOS批处理中的逻辑运算符(“ and”,“ or”)
-
23-09-2019 - |
题
您将如何在DOS批处理文件中实现逻辑运算符?
解决方案
你可以做 and
嵌套条件:
if %age% geq 2 (
if %age% leq 12 (
set class=child
)
)
或者:
if %age% geq 2 if %age% leq 12 set class=child
你可以做 or
带有单独的变量:
set res=F
if %hour% leq 6 set res=T
if %hour% geq 22 set res=T
if "%res%"=="T" (
set state=asleep
)
其他提示
这 IF
声明不支持逻辑运营商(AND
和 OR
),级联 IF
陈述是隐式连词。
IF Exist File1.Dat IF Exist File2.Dat GOTO FILE12_EXIST_LABEL
如果 File1.Dat
和 File1.Dat
存在然后跳下标签 FILE12_EXIST_LABEL
.
也可以看看: IF /?
摩根的法律 允许我们仅使用连词(“和”)和否定(“非”)将析取(“或”)转换为逻辑当量。这意味着我们可以将析取(或“)链接到一条线上。
这意味着如果名字是“ Yakko”或“ Wakko”或“ Dot”,则是Echo“ Warner兄弟或姐妹”。
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
这是Paxdiablo的“或”示例的另一个版本,但是将条件链接到一行。 (请注意,相反 leq
是 gtr
, ,相反 geq
是 lss
.)
set res=true
if %hour% gtr 6 if %hour% lss 22 set res=false
if "%res%"=="true" set state=asleep
以下示例显示了如何制作和语句(用于设置变量或包括命令的参数)。
要启动记事本并关闭CMD窗口:
start notepad.exe & exit
如果变量“ a”等于blah,则将变量x,y和z设置为值。
IF "%a%"=="blah" (set x=1) & (set y=2) & (set z=3)
希望有帮助!
我认为ffplay从版本更改为版本,但在我看的代码中,我没有看到任何IPC代码和事件都是从SDL开发的GUI接收的。因此,您可以使用这种方式或者您可以在ffplay.c中更改event_loop()函数以获取STDIN的事件,而且使用QProcess的Write()方法发送事件。
您也可以简单地在您自己的类中删除main()和event_loop()函数中的ffplay代码。
我建议您在VS2012中查找编码UI测试。你没有提到你的SharePoint版本,因为它只是假设它是2013年。
Microsoft SharePoint 2013提供的所有功能都可以使用少数例外测试进行编码的UI测试来测试。
我建议您做的是在解决方案上的核心功能进行小型测试用例。然后稍后扩展它。使其小而模块化希望使其保持可维护。一个简单的陷阱是制造真正的大,在整个测试用例中,这将很难改变。 好运
Athul Prakash(当时16岁)给出了如何通过否定语句中的条件,然后将Else子句用作将需要执行的代码的位置来实现或测试的逻辑想法。我以为自己,但是通常需要两个条款,因为他建议使用两个语句,因此需要编写执行的代码 两次. 。但是,如果使用一个goto跳过所需的代码,而不是编写else子句,则只需要编写执行代码 一次.
这是我如何实施Athul Prakash的负面逻辑来创建一个可检验的例子 或者.
在我的示例中 如果有人拥有坦克许可证或他们正在服兵役,则可以驾驶坦克. 。进入 真的 或者 错误的 在两个提示下,您将能够查看逻辑是否允许您驾驶坦克。
@ECHO OFF
@SET /p tanklicence=tanklicence:
@SET /p militaryservice=militaryservice:
IF /I NOT %tanklicence%==true IF /I NOT %militaryservice%==true GOTO done
ECHO I am driving a tank with tanklicence set to %tanklicence% and militaryservice set to %militaryservice%
:done
PAUSE
与以下内容一样容易:
> if+如果
if "%VAR1%"=="VALUE" if "%VAR2%"=="VALUE" *do something*
或>如果//如果
set BOTH=0
if "%VAR1%"=="VALUE" if "%VAR2%"=="VALUE" set BOTH=1
if "%BOTH%"=="0" if "%VAR1%"=="VALUE" *do something*
if "%BOTH%"=="0" if "%VAR2%"=="VALUE" *do something*
我知道还有其他答案,但是我认为我的更简单,因此更容易理解。希望这对您有帮助! )
如果您有兴趣写一个 if
+AND
/OR
在一个陈述中,没有任何内容。但是,您仍然可以分组 if
和 &&
/||
和 (
/)
陈述可以实现您想要的一行,与任何其他变量和w/o if-else
块重复(单个 echo
命令 TRUE
和 FALSE
代码部分):
@echo off
setlocal
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
exit /b 0
:IF_OR
( ( if %A% EQU 1 ( type nul>nul ) else type 2>nul ) || ( if %B% EQU 2 ( type nul>nul ) else type 2>nul ) || ( echo.FALSE-& type 2>nul ) ) && echo TRUE+
exit /b 0
:IF_AND
( ( if %A% EQU 1 ( type nul>nul ) else type 2>nul ) && ( if %B% EQU 2 ( type nul>nul ) else type 2>nul ) && echo.TRUE+ ) || echo.FALSE-
exit /b 0
输出:
TRUE+
FALSE-
FALSE-
FALSE-
TRUE+
TRUE+
TRUE+
FALSE-
诀窍在于 type
命令掉落/设置 errorlevel
因此,处理下一个命令的道路。
如果发现Internet Explorer以不同的方式处理自动完成的焦点事件,以不同地浏览器;基本上IE异步执行事件,而且因为此我无法快速确定事件触发的事件顺序。基本上,我所要做的就是将这个小型代码添加到Select事件:
select: function(event, ui) {
$this = $(this);
setTimeout(function() {
$("#<%=txtBoss.ClientID %>").val(ui.item.boss);
$this.blur();
}, 1);
}
.
我找到了一篇很好的文章,这里非常好地解释: http://daniellang.net/blur-not-working-with-jquery-ui-autocomplete-in-ie/ 对Andry的答案进行了稍作修改,减少了重复类型的命令:
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