Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Add to PATH environment variable if value does not already exist

Posted on 2013-05-16
3
Medium Priority
?
1,865 Views
Last Modified: 2013-07-04
I am using the following to add to my PATH environment variable in DOS

Path=%Path%;C:\Windows\Microsoft.NET\Framework\v3.5

This works as expected, but the batch file will be run repeatedly so I want to add some code that will only append to the batch file if the value is not actually there? Is this possible?

Also, when I use the SET command in DOS the changes I have made to the environment variable are shown, but when I try and access the information via My Computer > Environment Variables it doesn't look like these have been refreshed? Is there a command I can use to refresh these?
0
Comment
Question by:Blowfelt82
3 Comments
 
LVL 85

Accepted Solution

by:
oBdA earned 2000 total points
ID: 39170894
"Set" can only set variables whose scope is the current command prompt; as soon as the prompt is closed, the environment variables are gone.
If you want it to be available permanently, you need "setx.exe" (which does not set the variable for the current session!).
@echo off
set AddPath=C:\Windows\Microsoft.NET\Framework\v3.5
echo path| find /i "%AddPath%" >NUL
if errorlevel 1 (
	set Path=%Path%;%AddPath%
	setx.exe /m Path "%Path%;%AddPath%"
)

Open in new window

0
 
LVL 59

Expert Comment

by:Bill Prew
ID: 39171066
A couple of notes.  First, I think the PATH in the above FIND needs % around it.  In addition, we need to watch out to make sure we match the full path we are trying to add, not just a subset of an existing but different path.  For example if we wanted to add "c:\temp" anmd there was already a c:\tempold" the above would fail to add.  Below are a couple of ways to deal with that, one adds a semicolon to the end of the new path to make sure it's a full match.  The other parses the current path breaking it up at the existing semicolons and then compares to the full path (some trickery needed there).

Also of course keep in mind that the PATH command is a bit odd, and there are other uncommon situations that can occur.  For example the paths can be relative in the PATH variable.  And it will work with paths using either \ or / between folder names.  Paths can be added with a training \ or not.  And Paths can be added with quotes around them. So lots of odd cases, but typically we just check for the normal stuff.

@echo off
set AddPath=C:\Windows\Microsoft.NET\Framework\v3.5
echo %PATH%; | find /i "%AddPath%;" >NUL || (
  set Path=%PATH%;%AddPath%
  setx.exe /m PATH "%PATH%;%AddPath%"
)

Open in new window

@echo off
set AddPath=C:\Windows\Microsoft.NET\Framework\v3.5
set Found=N
for %%A in ("%PATH:;=","%") do if /i "%%~A" EQU "%AddPath%" set Found=Y
if "%Found%" EQU "N" (
  set Path=%PATH%;%AddPath%
  setx.exe /m PATH "%PATH%;%AddPath%"
)

Open in new window

~bp
0
 
LVL 11

Expert Comment

by:paultomasi
ID: 39192960
The proper way to do it is with the following command:

if not defined AddPath setx AddPath C:\Windows\Microsoft.NET\Framework\v3.5 /m

Open in new window

After issuing this command, open another DOS box and you will see the variable is set using the SET command.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

TOMORROW TOMORROW.BAT is inspired by a question I get asked over and over again; that is, "How can I use batch file commands to obtain tomorrow's date?" The crux of this batch file revolves around the XCOPY command - a technique I discovered w…
VALIDATING DATES One method of validating dates is to jam the date into the DATE command and see if it accepts it by examining the system's errorlevel value. A non-zero result indicates failure. A typical example might look something like the fol…
Despite its rising prevalence in the business world, "the cloud" is still misunderstood. Some companies still believe common misconceptions about lack of security in cloud solutions and many misuses of cloud storage options still occur every day. …
Is your OST file inaccessible, Need to transfer OST file from one computer to another? Want to convert OST file to PST? If the answer to any of the above question is yes, then look no further. With the help of Stellar OST to PST Converter, you can e…
Suggested Courses

783 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question