0

我有一個批處理文件「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://stackoverflow.com/a/25919222/3074564)如何直接獲取__system__'PATH'來自注冊表。 – Mofi

回答

0

簡單的批處理文件:

@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

相關問題