如何在批处理文件中获取持续更新的环境变量

如何在批处理文件中获取持续更新的环境变量

我想访问第二个批处理文件中更新的环境变量,该变量正在使用第一个批处理文件不断地变化。

使用第一个批处理文件时,e.var 不断变化,但启动第二个批处理文件后,我只得到分配给 E.variable 的一个值。

例如:

第一批文件:

:start   
setx ev=%random%
sleep 5s
goto start:

第二批处理文件:

:start    
echo %ev%
sleep 10s  
goto start:

答案1

可能对环境变量有一些误解。这些是不是在正在运行的进程之间共享(想想这会导致的所有混乱),但是每一个进程在它的自己的环境。

改变进程 A 的环境变量ev不会影响设置或改变ev进程 B 的环境变量。

启动过程的新环境由以下方式创建:复制其“父进程”的环境(启动它的进程)。这就是为什么您仍然会看到在进程 A 中设置为环境变量的值。ev它被复制到运行第二个批处理的新进程的环境中。

当 A 的环境中的变量ev不断变化时,B 的环境中的变量ev将保持不变。

答案2

这两个.bat文件在两个单独的命令提示符窗口中运行时工作正常

第1个脚本:

@echo off
:start
setx ev %random%
timeout /t 5 /nobreak >nul
goto start:

第二个.bat:

@echo off
:start
for /f "tokens=2*" %%A in ('REG QUERY "HKCU\Environment" /v ev ^|FIND "ev"') DO set ev=%%B
echo %ev%
timeout /t 10 /nobreak >nul
goto start:

相关内容