-
Notifications
You must be signed in to change notification settings - Fork 34
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Refresh environment on first install
- Loading branch information
Showing
4 changed files
with
73 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
@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" | ||
|
||
:: Cleanup | ||
del /f /q "%TEMP%\_env.cmd" 2>nul | ||
|
||
:: reset user / architecture | ||
SET "USERNAME=%OriginalUserName%" | ||
SET "PROCESSOR_ARCHITECTURE=%OriginalArchitecture%" | ||
|
||
echo | set /p dummy="Finished." | ||
echo . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
call "%~dp0RefreshEnv.cmd" | ||
call "%~dp0pico-env.cmd" | ||
setlocal enabledelayedexpansion | ||
|
||
|