我在批处理文件中使用了多个变量,我需要检查它们是否包含任何值。
当前我正在使用:-
IF [%TEST%] == [] (
echo The Value of Test is empty!
exit /b )
但是使用此方法会增加代码行,是否有某种可以像批处理那样使用OR的方式(就像我们对shell所做的那样)。
答案 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
)
在最后一个代码中,必须选择一个不能出现在任何变量中的定界符。