I'm trying to run a cmd line application from c# using Process.Start(ProcessStartInfo);
The problem is, the cmd line application is a matlab standalone .exe and has optional arguments meaning that you pass them on the cmd line as such:
app.exe "optional1" optional1value "optional2" optional2value
Where optional1value is a integer or string etc.
The problem we're having is that the double quotes aren't being passed as part of the "optional1" argument and so I believe cmd.exe is getting something like:
app.exe optional1 optional1value optional2 optional2value
or something like that, which matlab's parser obviously gets confused by.
I have tried:
@"""optional1"" optional1value ""optional2" optional2value"""
as suggested by some in other SO questions regarding double quotes in cmd line arguments but it doesn't seem to be working for me, nor does:
""optional1" optional1value "optional2" optional2value""
I have written a small c# command line .exe to print out the arguments it gets. If I put the command line arguments in VS Project->Debug area and run it then it prints them with double quotes but because of all the escaping etc. when I do this in code, the .exe prints the arguments without any double quotes.
I found this article about it maybe being a bug in .NET 3.5's cmd parser but can't seem to find a viable solution.
Does anyone have any ideas?
Thank you for your time,
Poncho
P.S. Is there a way to see what cmd.exe gets when sending arguments over with Process.Start()? I have my Process opening a cmd window but it would be nice to see the line cmd.exe gets such as: "app.exe optional1 optional1value" etc.
Thanks again.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…