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

windows – 批处理脚本使其他批处理文件访问setlocal变量

发布时间:2020-12-13 22:51:32 所属栏目:Windows 来源:网络整理
导读:我正在编写一个批处理文件来从文件中读取路径并将其设置为环境变量.许多其他批处理文件将使用(调用)此批处理文件来获取变量.在编写批处理文件的时候,我遇到了一个问题就是变量扩展,所以我使用了SETLOCAL ENABLEDELAYEDEXPANSION来解决这个问题.但是这样做,正
我正在编写一个批处理文件来从文件中读取路径并将其设置为环境变量.许多其他批处理文件将使用(调用)此批处理文件来获取变量.在编写批处理文件的时候,我遇到了一个问题就是变量扩展,所以我使用了SETLOCAL ENABLEDELAYEDEXPANSION来解决这个问题.但是这样做,正在使用它的其他批处理文件无法获取变量集.

以下是批处理脚本,

getVariables.bat

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
if EXIST "test.dat" (
    for /F "tokens=*" %%I in (test.dat) do set %%I
    echo setting JAVA_HOME to :: !JAVA_HOME!
    echo setting JAVA to !JAVA!
)

在我的另一个批处理文件中,我使用上面的batach文件来设置变量

another.bat

   call getVariables.dat
   echo "%JAVA%"

但回声是打印“”,没有设置.如果这是因为setlocal,我怎么能克服这个?我还需要setlocal来延迟扩展并在执行时发生.解决这个问题的任何方法?请帮帮我.

要将多个全局变量设置为局部变量的值,请使用以下技巧:
endlocal & (
  set "globalvar1=%localvar1%"
  set "globalvar2=%localvar2%"
  set "globalvar3=%localvar3%"
)

()块中的变量在执行endlocal之前展开.

(编辑:李大同)

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

    推荐文章
      热点阅读