The Command type just creates another process, and because cmd.exe isn't a GUI program (it uses the console subsystem), using Command::new("cmd") to start cmd.exe will just run it in the background.
The trick is to ask Windows to figure out how to run cmd.exe with the equivalent of start cmd /c .... Using start` will automatically create a new console window.
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 193, kind: Other, message: "%1 is not a valid Win32 application." }'
IIRC cmd /c uses non-standard quote escaping rules, which cannot be satisfied via Command. Command cannot be made work, and you will have to use appropriate Win32 APIs directly.
There's been proposal for .arg_raw, but hasn't been accepted/implemented yet.
Unlike *nix where arguments are passed to the process as an array of strings, Windows will pass command-line arguments as one long string (lpCommandLine). I'm guessing arg_raw would be a Windows-specific method added to std::process::Command to set lpCommandLine.