How can I refresh the PATH environment variable in a Batch script

luffy picture luffy · Oct 4, 2016 · Viewed 18.9k times · Source

I have a batch file "file.bat" that will call an installer with the following command:

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

The installer will install a program and update the Path variable. While this works fine, the problem is when I try to start the program it's not found because apparently the PATH variable was not updated. I tried restarting the batch file from within itself with:

start cmd /c file.bat 

but it didn't work. Is there a way to refresh the PATH variable or maybe restart the batch file in a new process so that it detects the new environment?

PS: restarting the batch file manually works of course but it's not what I want.

Thanks.

Answer

Arkadiusz Przechodzki picture Arkadiusz Przechodzki · Aug 10, 2018

Easiest way, use Chocolatey (freeare). Then you will be able to reload PATH (with variable expansion) with a simple command:

refreshenv

Installation from cmd (requires admin rights):

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

Example usage:

> SET JAVA_HOME=c:/java/jdk6
> SET PATH=%JAVA_HOME%/bin
> ECHO %PATH%
c:/java/jdk6/bin

> SET JAVA_HOME=c:/java/jdk8
> refreshenv
Refreshing environment variables from registry for cmd.exe. Please wait...Finished..
> echo %PATH%
c:/java/jdk8/bin