我想以后访问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语句,但它似乎并没有工作。 与之呼应关残疾人,我可以看到显示这些变量越来越集中的说法,但我似乎无法打印出来。
你找到了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!"
)