相关疑难解决方法(0)

使环境变量在ENDLOCAL中生效

我有一个批处理文件,通过一系列中间变量计算变量:

@echo off
setlocal

set base=compute directory
set pkg=compute sub-directory
set scripts=%base%\%pkg%\Scripts

endlocal

%scripts%\activate.bat
Run Code Online (Sandbox Code Playgroud)

最后一行的脚本没有被调用,因为它来自endlocal,它破坏了scripts环境变量,但它必须在endlocal之后,因为它的目的是设置一堆其他环境变量供用户使用.

如何调用脚本的目的是设置永久环境变量,但是谁的位置是由临时环境变量决定的?

我知道我可以在endlocal之前创建一个临时的批处理文件,并在endlocal之后调用它,如果没有别的东西可以解决,我会这样做,但我想知道是否有一个不那么令人讨厌的解决方案.

batch-file environment-variables

25
推荐指数
3
解决办法
2万
查看次数

为什么批处理文件中的延迟扩展在这种情况下不起作用?

这段代码

@echo off
setlocal EnableDelayedExpansion

set myvar=first
set first=second

echo myvar:!myvar!
set myvar=!myvar!
echo myvar:!myvar!
Run Code Online (Sandbox Code Playgroud)

myvar:first
myvar:first
Run Code Online (Sandbox Code Playgroud)

在Windows Vista SP2上.

我预期的输出是

myvar:first
myvar:second
Run Code Online (Sandbox Code Playgroud)

为什么差异以及如何获得理想的效果?

windows batch-file

3
推荐指数
1
解决办法
6278
查看次数