isn't this windows doing the translation ?
you pass in %foo% and the cmd shell that the blpackage opens resolves it. why don't you want it resolved ?
Just escape the % using a carret (^) in your external command:
setx path "^%path^%;^%SystemRoot^%\SysInternals" /M
If he wants the actual value of the variable to reference another variable, he needs it to not be expanded so it's enterred literally. See my answer.