如何批量检查多个空变量

时间:2018-09-11 07:33:59

标签: batch-file

我在批处理文件中使用了多个变量,我需要检查它们是否包含任何值。

当前我正在使用:-

IF [%TEST%] == [] (
echo The Value of Test is empty!
exit /b )

但是使用此方法会增加代码行,是否有某种可以像批处理那样使用OR的方式(就像我们对shell所做的那样)。

2 个答案:

答案 0 :(得分:4)

我认为最简单的方法是简单地创建一个for循环并测试每个值。因此,请考虑以下几点:

如果您想在值为空(未定义)时不执行任何操作,只需使用已定义的变量值即可:

@echo off
set "test1=Value1"
set "test2=Value2"
set "test3="
set "test4=Value4"
set "myvars=%test1% %test2% %test3% %test4%"

for %%i in (%myvars%) do echo %%i

如果您实际上只想测试变量是否未定义:

@echo off
set "test1=Value1"
set "test2=Value2"
set "test3="
set "test4=Value4"
set "myvars=test1 test2 test3 test4"

for %%i in (%myvars%) do if not defined %%i (echo %%i not defined) else echo %%i Defined

或者,如果您只是想在循环中包含变量,而不是将其分配给单个变量:

@echo off
set "test1=Value1"
set "test2=Value2"
set "test3="
set "test4=Value4"

for %%i in (test1 test2 test3 test4) do if not defined %%i (echo %%i not defined) else echo %%i Defined

答案 1 :(得分:4)

我认为最简单的方法是这样

if "%test1%%test2%%test3%" equ "" ( 
   echo The three variables are empty!
   exit /b
)

编辑添加了其他测试

好的。下面的代码检查变量中至少有一个 不为空

if "%test1%%test2%%test3%" neq "" ( 
   echo At least one variable is not empty!
   exit /b
)

然后下一个代码检查至少一个变量为空

set "allVars=|%test1%|%test2%|%test3%|"
if "%allvars:||=%" neq "%allVars%" (
    echo At least one variable is empty
)

在最后一个代码中,必须选择一个不能出现在任何变量中的定界符。