多个条件的批处理文件语法?

时间:2015-07-23 17:21:46

标签: batch-file syntax

是否可以通过IF语句检查两个标准?或者它必须是两个IF语句?

我想说的是“如果用户名是'owen'或'oiverson',那么GOTO就是这样......”

3 个答案:

答案 0 :(得分:1)

没有!但是有很多不同的解决方法。 试试这个:

set username=Owen
set found=no

if [%username%]==[Owen] set found=yes
if [%username%]==[oiverson] set found=yes

if %found%==yes goto :yes
goto :no

:yes
@echo Found user

:no

答案 1 :(得分:0)

您可以将两个if语句与goto一起使用,如下所示:

rem assuming variable %user% holds the value to check:
if "%user%"=="owen" goto :CondTrue
if "%user%"=="oiverson" goto :CondTrue

:CondFalse
rem ... (none of the conditions is fulfilled)
goto :Continue

:CondTrue
rem ... (one or both conditions are met)

:Continue
rem ...

答案 2 :(得分:0)

取决于具体情况。例如,如果要检查名称列表中是否包含用户名(似乎是这种情况),则可以使用此方法:

setlocal EnableDelayedExpansion

set "validNames=/owen/oiverson/"

if "!validNames:/%userName%/=!" neq "%validNames%" (
   echo "%userName%" is included in this list: "%validNames%"
)

当然,有效名称列表可能包含任意数量的名称。

如果您希望两个变量都具有特定的特定值(对所有变量都是AND),请使用:

if "%user%+%version%" equ "expected_user+expected_ver" (
   echo Both variables have the target values
)

您可以通过这种方式检查两个以上的变量。

正如我之前所说,取决于具体情况......