我稍后尝试访问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的情况下,我可以看到显示这些变量设置的语句,但我似乎无法将它们打印出来.
你找到了bbb(批处理初学者bug),但是变量不是空的,它是不能按预期工作的扩展.
原文链接:https://www.f2er.com/windows/371822.html在执行代码之前,在解析行或完整括号块时完成百分比扩展.
但要解决此问题,您可以使用延迟扩展,这不会在分析时扩展,它会在执行时扩展.
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!" )