我怎么能刷新PATH环境变量在批处理脚本

我怎么能刷新PATH环境变量在批处理脚本

问题描述:

我有一个批处理文件“file.bat”将调用安装程序使用以下命令:我怎么能刷新PATH环境变量在批处理脚本

msiexec.exe /i "%~dp0\installer.msi" 

安装程序将安装程序和更新Path变量。 虽然这工作正常,但问题是,当我尝试启动程序时,未找到该程序,因为显然PATH变量未更新。 我试图重新启动批处理文件本身:

start cmd /c file.bat 

,但没有奏效。 有没有办法刷新PATH变量,或者可能重新启动新进程中的批处理文件,以便它检测到新的环境?

PS:重新启动批处理文件手动工作当然,但它不是我想要的。

感谢。这刷新%路径%环境变量

+0

'设置path =%PATH%; C:\其他一些folder' – Squashman

+1

我认为,如果你张贴整个文件可能是有用。蝙蝠。 – Compo

+3

您必须从命令__reg__或命令__setx__直接从注册表中读取__system__'PATH'值,并使用新的__system__'PATH'更新/替换__local__'PATH'。请参阅[为什么其他文件夹路径也通过SetX添加到系统PATH,而不仅仅是指定的文件夹路径?](http://*.com/a/25919222/3074564)如何直接获取__system__'PATH'来自注册表。 – Mofi

简单的批处理文件:

@echo off 
echo. 
echo Refreshing PATH from registry 

:: Get System PATH 
for /f "tokens=3*" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do set syspath=%%A%%B 

:: Get User Path 
for /f "tokens=3*" %%A in ('reg query "HKCU\Environment" /v Path') do set userpath=%%A%%B 

:: Set Refreshed Path 
set PATH=%userpath%;%syspath% 

echo Refreshed PATH 
echo %PATH% 
+0

这是一个很好的答案J03L,但问题是,当我设置这样的路径: JAVA_7 = C:\ Program Files文件\的Java \ jdk1.7xxxx JAVA_8 = C:\ Program Files文件\的Java \ jdk1.8xxxx JAVA_HOME =%JAVA_8% 路径=%JAVA_HOME%\ bin中;%MAVEN_HOME%\ bin中 由于这将产生具有 %JAVA_8%\ bin中的路径; C:\ Windows \ System32下\ WindowsPowerShell \ V1.0 \; C: \ Windows \ IDMU \常见;等等。 \t 您认为可以更改批处理文件以生成用户变量的第二级变量替代吗? 只是好奇,仍然是一个不错的答案寿! – jfajunior