The problem is related to escaping paths in Pre-Build, Pre-Link, and Post-Build events. Both batch processor and powershell behave as expected when invoked from a build event command line. That is, before passing parameters to powershell, batch shell processes escape sequences. That is expected and it is usually scripter's responsibility to do proper multiple escaping.
The problem I see lies with VS2012 as it is impossible to properly escape escape sequences when content comes via variables - given the way VS2012 invokes the commands. Apparently it calls a batch shell equivalent.
What is normally done to avoid this impossibility, is either to use an exec-equivalent call which does not perform any expansion or feed input into a command interpreter as a stdin or a filename to execute, again, without expansion. VS2012 does one extra step of passing build steps through a shell - and that hurts. I am not sure what is Microsoft's rationale behind it.
So, to mitigate the problem one thing Microsoft could do is allow a user to specify an interpreter name and then an array of args - which won't be escaped. Otherwise, allow a user to specify an interpreter and feed it the script at the stdin.
By the way, when I clicked on the "Search related threads" link at the top of this post, there is clearly much pain other users having with this issue. Which greatly limits the use of build events - and somewhat reduces the build tool usability overall.
The rest of the detailed description of the problem is here: http://social.msdn.microsoft.com/Forums/vstudio/en-US/629ff463-500a-46ee-b55d-167f908c4d3b