The copy part didn't work because the copy command was trying to copy the batch file onto itself. I suspect the open file dialog has changed the current directory.
Changing the cmd to
cmd = "\"" + batch + "\"";
Made it work on my PC. It pinged yahoo and then returned normally - note that it then just looped and ran the batch file again, until I pressed Control-C on the batch file, which then returned an error to system.
The error returned from system() is whatever the program being run returns.
To get more info on what is happening, stick "cmd /k " in from of any command you want to run - this will leave the command interpreter up when it is done running the copy/batch file. You then just type exit to return to your program.
I also had some problem because I was running through remote desktop back to work (where builder is). It reminded me how much I hate builder (at least version 5) - it seems to lock up every now and then for no good reason.