如果for循环具有空variables,则Windows批处理会发生错误

我试图做一个简单的,如果这样的话

if %REGEDIT_HOME%=="" ( echo. echo Forms6i not present echo. ) else ( for /f "skip=1 tokens=3" %a in ('reg query %REGEDIT_HOME% > %LOGDIR%\tmp.txt') do ( echo. > nul ) ) 

问题是因为REGEDIT_HOME实际上是空的,我得到一个错误
)在这个时候是意外的。

 if "%REGEDIT_HOME%"=="" ( 

匹配是一个文字字符串 – 它必须完全相同的==两侧是真实的。

要么

你可以使用

 if defined REGEDIT_HOME ( 

这显然颠倒了你用过的逻辑。

""不是空字符串。 这是两个双引号。

如果变量是空的,你的if被解释为:

 if =="" ( 

这给你的错误。

所以你必须检查

 if "%REGEDIT_HOME%"=="" (... 

如果变量是空的,则解释为:

 if ""=="" (