Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @echo off
- ::
- :: RefreshEnv.cmd
- ::
- :: Batch file to read environment variables from registry and
- :: set session variables to these values.
- ::
- :: With this batch file, there should be no need to reload command
- :: environment every time you want environment changes to propagate
- ::echo "RefreshEnv.cmd only works from cmd.exe, please install the Chocolatey Profile to take advantage of refreshenv from PowerShell"
- echo | set /p dummy="Refreshing environment variables from registry for cmd.exe. Please wait..."
- goto main
- :: Set one environment variable from registry key
- :SetFromReg
- "%WinDir%\System32\Reg" QUERY "%~1" /v "%~2" > "%TEMP%\_envset.tmp" 2>NUL
- for /f "usebackq skip=2 tokens=2,*" %%A IN ("%TEMP%\_envset.tmp") do (
- echo/set "%~3=%%B"
- )
- goto :EOF
- :: Get a list of environment variables from registry
- :GetRegEnv
- "%WinDir%\System32\Reg" QUERY "%~1" > "%TEMP%\_envget.tmp"
- for /f "usebackq skip=2" %%A IN ("%TEMP%\_envget.tmp") do (
- if /I not "%%~A"=="Path" (
- call :SetFromReg "%~1" "%%~A" "%%~A"
- )
- )
- goto :EOF
- :main
- echo/@echo off >"%TEMP%\_env.cmd"
- :: Slowly generating final file
- call :GetRegEnv "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" >> "%TEMP%\_env.cmd"
- call :GetRegEnv "HKCU\Environment">>"%TEMP%\_env.cmd" >> "%TEMP%\_env.cmd"
- :: Special handling for PATH - mix both User and System
- call :SetFromReg "HKLM\System\CurrentControlSet\Control\Session Manager\Environment" Path Path_HKLM >> "%TEMP%\_env.cmd"
- call :SetFromReg "HKCU\Environment" Path Path_HKCU >> "%TEMP%\_env.cmd"
- :: Caution: do not insert space-chars before >> redirection sign
- echo/set "Path=%%Path_HKLM%%!!%%Path_HKCU%%" >> "%TEMP%\_env.cmd"
- :: Cleanup
- del /f /q "%TEMP%\_envset.tmp" 2>nul
- del /f /q "%TEMP%\_envget.tmp" 2>nul
- :: capture user / architecture
- SET "OriginalUserName=%USERNAME%"
- SET "OriginalArchitecture=%PROCESSOR_ARCHITECTURE%"
- :: Set these variables
- call "%TEMP%\_env.cmd"
- :: reset user / architecture
- SET "USERNAME=%OriginalUserName%"
- SET "PROCESSOR_ARCHITECTURE=%OriginalArchitecture%"
- echo | set /p dummy="Finished."
- echo .
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement