加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – DOS批处理:为什么我的set命令导致什么都没有存储?

发布时间:2020-12-13 20:32:52 所属栏目:Windows 来源:网络整理
导读:我稍后尝试访问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 CATALIN
我稍后尝试访问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),但是变量不是空的,它是不能按预期工作的扩展.

在执行代码之前,在解析行或完整括号块时完成百分比扩展.
但要解决此问题,您可以使用延迟扩展,这不会在分析时扩展,它会在执行时扩展.

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!"
)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读