There is a definite problem with expanding environment variables within the PATH variable when the variable expands to a path that contains spaces.
We created our own system level variables like "OUR_ROOT=c:\MyRoot" and then used it in system PATH like "PATH=;%OUR_ROOT%\bin;" and that gets expanded correctly to "PATH=;c:\MyRoot\bin;". So far no problem.
But, on Windows 7 (32-bit), I had a product install itself and create system environment variables like this:
STUDIO_BIN=C:\program files\Company Name\Product Name 10.4\bin
and it added it to the system PATH variable:
PATH=<other path elements>;%STUDIO_BIN%;<more path elements>
But the PATH values shown in CMD contained "%STUDIO_BIN%;" and not the expanded path. The value in My Computer > Properties > Advanced > Env.Vars remained unexpanded as well. This meant I couldn't run programs that required a DLL in that directory.
By just changing STUDIO_BIN (via My Computer>Properties>Advanced ...>Env Vars) to a name without embedded spaces :
STUDIO_BIN=C:\ProductName\bin
and then restarting the CMD window, the PATH is now:
PATH=<other path elements>;C:\ProductName\bin;<more path elements>
Another solution is to sufficiently edit the system variable you are using in the PATH using the My Computer > Properties > Advanced... > Environment Variables dialog.
I tried adding a character and removing it to make a 'change' and then OK'd out, started a new CMD prompt and PATH was NOT correctly expanded.
I then tried deleting part of the path so it was
STUDIO_BIN=C:\Program Files\Company Name
(omitting "Product Name 10.4") and lo, and behold, the next CMD prompt showed PATH with STUDIO_BIN properly expanded!
Strangely enough, if I went back in and added the "Product Name 10.4" to STUDIO_BIN (including all the spaces that were originally there before I started mucking with it) and PATH was STILL correctly expanded.
Evidently with enough change to its contents, the PATH variable undergoes some extra processing in the Environment Variables dialog that allows it to work. Processing that's not done when the variable was added by the product's installer (which probably just modified PATH in the registry directly).
I'm almost positive this was a problem with XP as well. It just resurfaced for me in Windows 7 as I was putting together a new development machine. Apparently it has not been fixed by Microsoft.
Apparently even MS defined variables like %ProgramFiles% won't expand correctly in the PATH.
This page provides a possible answer if you're setting PATH via the command-line or batch file. (Enclose the whole command after SET in quotation marks.) I don't know what installer the product I installed used to set the environment variables, but it evidently went around whatever processing is needed to properly expand the paths with spaces.
So - to summarize, you can either:
change the paths (and move all associated files) to paths without spaces, or
edit the variables that are failing to expand in the Environment Variables dialog (changing them enough to get them to process correctly - I'm not positive how much is enough).
I'm looking at this in Windows 10 -- variable substitution into PATH failed intermittently to work. Going to Environment Variables & saving (without change) and then opening a new CMD prompt solved the problem. – Thomas W – 2016-10-12T02:03:16.200
9For all you guys voting to close (3 at the moment) ... if there's a dup somewhere, a comment pointing me to it sure would be nice.
If it's not a dupe ... then telling me what you think is wrong with this question would also be nice. – skiphoppy – 2009-08-21T18:40:21.550
1Perhaps because it is more a system question than a programming one, although it has a direct impact on programming, that's why I don't vote to close it... :) – None – 2009-08-21T18:49:43.297
9Attenion close-nazis: I'd like to promote the view that if a question was appropriate on Stack Overflow before superuser.com and serverfault.com arrived, then it is still appropriate today. This is a programming question. – skiphoppy – 2009-08-21T19:12:58.023
Do you mean that programmers are only users of Windows, who may have this problem? Shut up you, programmer-nazi! Secondly, before more appropriate Q&A site arrived, you had no option to post question here. The hospitality of SO must be not an argument for abusing it. – Val – 2013-07-07T15:54:05.717