gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:42:19 24 4
gpt4 key购买 nike

我正在编写一个批处理文件以从文件中读取路径并将其设置为环境变量。许多其他批处理文件将使用(调用)此批处理文件来获取变量。在编写批处理文件时,我遇到了变量扩展的问题,因此我使用 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%"

但是 echo 正在打印“”,但它没有被设置。如果这是因为 setlocal,我该如何克服呢?我还需要 setlocal 来延迟扩展并在执行时发生。我该如何解决这个问题?

最佳答案

要将多个全局变量设置为局部变量的值,请使用以下技巧:

endlocal & (
set "globalvar1=%localvar1%"
set "globalvar2=%localvar2%"
set "globalvar3=%localvar3%"
)

( ) block 中的变量在执行 endlocal 之前展开。

关于windows - 批处理脚本使其他批处理文件访问的setlocal变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15494688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com