A: 

Have you saved all of the needed variables in the System Variables as well? Because in order to expand the values, the system will have to have a "permanent" memory of all the needed variables.

If you do all these together in a row on the command line, just saying X=something and Y=%X%;else, then when you set the path to PATH=%PATH%;%Y%, the shell expands the values of all the variables before it saves the new value of PATH; but as soon as you close the Command Prompt window, the system has forgotten %X% and %Y% entirely.

However, if you use the System Properties Control Panel to set the PATH to include the unexpanded variables, than all those variables are going to have to exist as system variables when you reboot, or they'll fail to expand.

To ensure that you are saving all the variables in the system so that they are still there after the reboot, either use the System Properties Control Panel or the SETX.EXE command. If you are going to use them in the system PATH (not just your user account's path), then you'll want to use SETX /M X=blah or the bottom part of the System Properties | Environment Variables tab, labeled "System variables".

ewall
Yeah, I've been setting them via the Environment Variables / System Variables tab. It remembers all the variables, just doesn't expand them inside "Path". Everything else is remembered and expanded...
trycatch
A: 

Yeah, this is driving me crazy. Full repro by:

System Properties, Environment Varialbles, set up like so:

one = c:
two = %ONE%\two
three = %TWO%\three

Then click OK, and run cmd. Here's what I see:

C:\>set one
one=C:

C:\>set two
two=C:\two

C:\>set three
three=%TWO%\three

This link explains for Vista, but does not mention that it happens on Win7. http://support.microsoft.com/kb/911089

...Jonas

Jonas
Okay, I had that issue, but it actually works for multilevel now. Try "setlocal enabledelayedexpansion" and if that doesn't work after that restart. They all worked for me after that, EXCEPT where I have them on my path line, where they STILL don't expand.(I love that Microsoft's "workaround" is "don't do it". Hint: not driving is not a workaround to my engine not turning.)
trycatch