Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathRefreshEnv.cmd
More file actions
Latest commit
66 lines (53 loc) · 2.3 KB
/
Copy pathRefreshEnv.cmd
File metadata and controls
66 lines (53 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
@echooff
:: This file is taken from chocolatey:
:: https://github.com/chocolatey/choco/blob/master/src/chocolatey.resources/redirects/RefreshEnv.cmd
::
:: 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,*"%%AIN ("%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"%%AIN ("%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 .