Holy cow, I wrote a book!
If you try to set the current directory of a command prompt, you
get the error message
"CMD does not support UNC paths as current directories."
What's going on here?
It's MS-DOS backwards compatibility.
If the current directory were a UNC,
there wouldn't be anything to return to
MS-DOS programs when they call function 19h (Get current drive).
That function has no way to return an error code,
so you have to return a drive letter.
UNCs don't have a drive letter.
You can work around this behavior by using the pushd
command to create a temporary drive letter for the UNC.
Instead of passing script.cmd to the
CreateProcess function as the lpCommandLine,
you can pass
cmd.exe /c pushd \\server\share && script.cmd.
cmd.exe /c pushd \\server\share && script.cmd
(Griping that seems to happen any time I write about batch files,
so I'll gripe them pre-emptively:
Yes, the batch "language" sucks because it wasn't designed;
it just evolved.
I write this not because I expect you to enjoy writing batch files
but because you might find yourself forced to deal with them.
If you would rather abandon batch files and use a different command
interpreter altogether, then more power to you.)