我怎么能刷新PATH环境变量在批处理脚本
我有一个批处理文件“file.bat”将调用安装程序使用以下命令:我怎么能刷新PATH环境变量在批处理脚本
msiexec.exe /i "%~dp0\installer.msi"
安装程序将安装程序和更新Path变量。 虽然这工作正常,但问题是,当我尝试启动程序时,未找到该程序,因为显然PATH变量未更新。 我试图重新启动批处理文件本身:
start cmd /c file.bat
,但没有奏效。 有没有办法刷新PATH变量,或者可能重新启动新进程中的批处理文件,以便它检测到新的环境?
PS:重新启动批处理文件手动工作当然,但它不是我想要的。
感谢。这刷新%路径%环境变量
简单的批处理文件:
@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%
这是一个很好的答案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
'设置path =%PATH%; C:\其他一些folder' – Squashman
我认为,如果你张贴整个文件可能是有用。蝙蝠。 – Compo
您必须从命令__reg__或命令__setx__直接从注册表中读取__system__'PATH'值,并使用新的__system__'PATH'更新/替换__local__'PATH'。请参阅[为什么其他文件夹路径也通过SetX添加到系统PATH,而不仅仅是指定的文件夹路径?](http://stackoverflow.com/a/25919222/3074564)如何直接获取__system__'PATH'来自注册表。 – Mofi