Solved

Add to PATH environment variable if value does not already exist

Posted on 2013-05-16
3
1,406 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 83

Accepted Solution

by:
oBdA earned 500 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 53

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

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

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

Using dates in 'DOS' batch files has always been tricky as it has no built in ways of extracting date information.  There are many tricks using string manipulation to pull out parts of the %date% variable or output of the date /t command but these r…
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…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
In a recent question (https://www.experts-exchange.com/questions/28997919/Pagination-in-Adobe-Acrobat.html) here at Experts Exchange, a member asked how to add page numbers to a PDF file using Adobe Acrobat XI Pro. This short video Micro Tutorial sh…

776 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