Batch file 是否有命令从Windows中的同一命令提示符刷新环境变量?

Batch file 是否有命令从Windows中的同一命令提示符刷新环境变量?,batch-file,Batch File,我需要在同一个命令提示符下更新val2的值。Val2是一个环境变量,我从vcxproj文件中使用它。val2将根据不同的目标包含不同的值。如何在同一命令提示符下刷新/更新val2的值 @echo OFF cd 8909 echo start the script readelf qcdsp28909.mbn -l | awk '{if (match($6,/0x/)){if ($1 == "LOAD" ) print strtonum($6)}}'| awk '{ sum+=$1}

我需要在同一个命令提示符下更新val2的值。Val2是一个环境变量,我从vcxproj文件中使用它。val2将根据不同的目标包含不同的值。如何在同一命令提示符下刷新/更新val2的值

@echo OFF


cd 8909

echo start the script 

readelf qcdsp28909.mbn -l | awk '{if (match($6,/0x/)){if ($1 == "LOAD" ) print strtonum($6)}}'|  awk '{ sum+=$1} END {print sum/1024/1024}' > value.txt 2>&1

set /p size=<value.txt

echo %size%

for /f "tokens=1,2 delims=." %%a  in ("%size%") do (
  set first_part=%%a
  set second_part=%%b
)

set second_part=%second_part:~0,1%
echo %second_part%
if defined second_part if %second_part% GEQ 5 ( 

    set /a rounded=%first_part%+1
) else ( 
    set /a rounded=%first_part%
)

echo %rounded%

set /a rounded= "%rounded% * 1024 * 1024"

echo %rounded%

call cmd /c exit /b %rounded%
set hex=%=exitcode%

echo %hex%

SetX -m val2 "%hex%"

echo %val2%

pause
@echo关闭
cd 8909
启动脚本
readelf qcdsp28909.mbn-l | awk'{if(match($6,/0x/){if($1==“LOAD”)print strotnum($6)}}{124; awk'{sum+=$1}END{print sum/1024/1024}value.txt 2>&1

set/p size=如果同一命令提示窗口中需要该变量,则只需设置该变量即可

set "val2=%hex%"

但是如果您需要在当前用户会话中刷新变量,那么最好阅读

,谢谢您的命令。但上面的命令设置了当前窗口中的值,但没有将其设置为ENV变量。是可以同时设置current和Env变量值的任意命令。因此,如果我打开新的cmd提示符,我的新值应该反映?@priyankkumardaal,您的选项是:重新启动会话,杀死每个资源管理器实例,或者使用链接答案中的代码(或类似代码)。如果我的cmd提示符是新打开的,那么此时setx没有设置当前正在使用的env变量。它正在设置为new cmd提示符。我期待的命令,可以更新现有的命令prompt@PriyankKumarDalal,你不能。链接答案中的代码能够通知系统中的顶级进程环境已更改,以便它们更新其环境变量,新打开的控制台或程序将看到该变量,因为环境是父进程中环境的副本。但这不会影响现有的控制台窗口。只需使用
set var=value
即可更改当前控制台窗口,从此处启动的任何控制台都将获得变量。但您不能更改另一个已打开的控制台的环境。