The problem arises due to the fact, that the TCL exec tries to pass each argument to its called program. The exec does quoting on its own. Due to that, it is not wise to pass all arguments as one to the exec call.
What I do is to eventually write a temporary batch file and issue the commands there.
In addition, there is a magic autoexec_ok function, which may also help.
In a nutshell:
Don't try to quote on your own
Pass arguments one by one
aMike has already commented this.
Please look to this page for the full problem and solution possibilities: TCL wiki:exec quotes problem