Holy shit... heres the answer that I'm astonished nobody already said:
exec('c:\test.bat');
Why your feeble mind might ask? Well because in languages such as perl, php, c++, and such strings use '\' sort of as if it is a variable, like \0 is zero byte, \n is newline, etc... so in order to get a real '\', you need to double it up.
This is an extremely common thing with php on windows servers, I typically use '/' instead since its simpler, and it works on all OSes (that I know of).
By the way, Hello all, this is my first post on this board _