run-program on Windows fails to process argv properly
First, it looks like ECL incorrectly uses ~S for quoting strings on the windows command-line, instead of the correct algorithm (that you can copy from uiop, sbcl, ccl, etc.).
Second, to invoke CMD.EXE and be able to give it commands that use redirection and/or quoting, you need to directly provide its unescaped command to CreateProcess. Thus, if argv is a string, just skip all the list to string quoting madness and pass the string through. The old ext:system did it, but the new ext:system calls run-program that doesn't do it.