我正在写一个批处理文件来从文件中读取一个路径并将其设置为环境变量。该批处理文件将被许多其他批处理文件使用(调用)以获取变量。在编写批处理文件时,我遇到了一个问题,因此我使用了SETLOCAL ENABLEDELAYEDEXPANSION
来解决这个问题。但是,使用它的其他批处理文件无法获取变量集。批处理脚本使setlocal变量访问其他批处理文件
下面是批处理脚本,
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
来延迟扩展并在执行时发生。这个问题的任何解决方案?请帮助我。
这是我的问题。我习惯于在我的所有脚本中使用SETLOCAL。最后,我发现了一个引起问题的例外。 – djangofan 2013-06-05 21:28:07