1

I found the following page (How do I modify the data of an existing registry key value name from cmd?) and it was extermely helpful, but I have a further question.

My PATH has a value that includes "c:\Program Files\Microsoft SQL Server\100\Tools\Binn\", and I'd like to add "P:\SQL" to it. When I run the script below, my PATH will then look like "C:\Program;P:\SQL". What needs to be modified so my PATH will look like "c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;P:\SQL"?

Here is what I have:

for /F "skip=2 tokens=3" %%r in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do set oldVal=%%r    
echo previous=%oldVal%    
set newVal=%oldVal%;P:SQL    
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d %newVal% /f

Thanks.

Nick H
  • 13

2 Answers2

1

How do I add a value to my PATH?

My PATH has a value that includes "c:\Program Files\Microsoft SQL Server\100\Tools\Binn\", and I'd like to add "P:\SQL" to it

Why are you reading/writing the registry?

Just use setx to add a value to your PATH:

setx PATH "%PATH%;P:\SQL" /m

Note:

  • /m Set the variable in the system environment HKLM.

    (The default is the local environment HKCU)


Further Reading


DavidPostill
  • 162,382
1

If you really want to tamper the registry you do so the following, but at your own risk

@echo off
set new_value=;P:/SQL     ::set the new value here

set key="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
for /F "delims= skip=2" %%r in ('reg query %key% /v "Path"') do set old_value=%%r
set old_value=%old_value:    Path    REG_SZ    =%
set new_value=%old_value%%new_value%
reg add %key% /v "Path" /d "%new_value%" /f

I must say, this is rather very crude way to do this. Always remember to take a backup of the registry before altering it.

Barremian
  • 815