我稍后尝试访问TOMCAT_VER的值,但它显示为空字符串。
if exist "%_REALPATH%\tomcat-%TOMCAT_VER2%" (
set CATALINA_HOME=%_REALPATH%\tomcat-%TOMCAT_VER2%
set TOMCAT_VER=%TOMCAT_VER2%
echo "%TOMCAT_VER%"
) else if exist "%TOMCAT_VER2%" (
set CATALINA_HOME="%TOMCAT_VER2%"
set TOMCAT_VER="%TOMCAT_VER2%"
echo "%TOMCAT_VER%"
)
为了进一步调试,我在它设置的下方插入了一个echo语句,但它似乎不起作用。禁用echo off后,我可以看到显示这些变量的声明,但我似乎无法将它们打印出来。
答案 0 :(得分:20)
您找到了bbb(批处理初学者错误),但该变量不是空的,它是不能按预期工作的扩展。
在执行代码之前解析一行或一个完整的括号块时,完成百分比扩展 但要解决此问题,您可以使用延迟扩展,这不会在解析时扩展,只会在执行时扩展。
setlocal EnableDelayedExpansion
if exist "%_REALPATH%\tomcat-%TOMCAT_VER2%" (
set CATALINA_HOME=%_REALPATH%\tomcat-%TOMCAT_VER2%
set TOMCAT_VER=%TOMCAT_VER2%
echo "!TOMCAT_VER!"
) else if exist "%TOMCAT_VER2%" (
set CATALINA_HOME="%TOMCAT_VER2%"
set TOMCAT_VER="%TOMCAT_VER2%"
echo "!TOMCAT_VER!"
)