Is that the whole batch file you're showing us?
I have a vague feeling you're doing the set and copy inside an if or similar statement with a block, e.g.
if foo==bar (
set MY_WORKSPACE=workspace1.0.1
copy ...
)
In this case you need delayed expansion for the variable change to take effect because the block in parentheses is parsed as a single command and all variables are substituted at parse time, not when runnin a command. Therefore %MY_WORKSPACE% will be empty once the block runs.
You can solve this by using
setlocal enabledelayedexpansion
at the top of your batch file and using !MY_WORKSPACE! instead of %MY_WORKSPACE% which will expand the variable just prior to running the command, not while parsing.