我正在编写一个批处理文件来从文件中读取路径并将其设置为环境变量。该批处理文件将被许多其他批处理文件使用(调用)来获取变量。在编写批处理文件时,我遇到了变量扩展的问题,所以我使用了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!
)
在我的另一个批处理文件中,我使用上面的批处理文件来获取变量集
another.bat
call getVariables.dat
echo "%JAVA%"
但 echo 正在打印“”,但未设置它。如果这是因为setlocal
,我该如何克服这个问题?我也需要setlocal
用于延迟扩展并在执行时发生。我该如何解决这个问题?
要将多个全局变量设置为局部变量的值,请使用以下技巧:
endlocal & (
set "globalvar1=%localvar1%"
set "globalvar2=%localvar2%"
set "globalvar3=%localvar3%"
)
( ) 块中的变量在执行 endlocal 之前展开。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)