when you /set %blah $2, that "$2" is already evaluated into text before it gets /set to %blah. Before I try wrapping my mind around it further, try removing all instances of -n you may be using in /set. the -n flag does exactly what you're explaining, to treat the value as plain text and not to evaluate it. If you're doing /set -n %blah $2, then yes, %blah == "$2" (without quotes).


Well. At least I won lunch.
Good philosophy, see good in bad, I like!