我正在编写一个批处理文件来从文件中读取路径并将其设置为环境变量.许多其他批处理文件将使用(调用)此批处理文件来获取变量.在编写批处理文件的时候,我遇到了一个问题就是变量扩展,所以我使用了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来延迟扩展并在执行时发生.解决这个问题的任何方法?请帮帮我.
要将多个全局变量设置为局部变量的值,请使用以下技巧:
原文链接:https://www.f2er.com/windows/365650.htmlendlocal & ( set "globalvar1=%localvar1%" set "globalvar2=%localvar2%" set "globalvar3=%localvar3%" )
()块中的变量在执行endlocal之前展开.