我正在编写一个批处理文件以从文件中读取路径并将其设置为环境变量。许多其他批处理文件将使用(调用)该批处理文件来获取变量。在编写批处理文件时,我遇到了变量扩展问题,所以我曾经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
延迟扩展并在执行时发生。我该如何解决这个问题?