我正在尝试使用 Process.Start(ProcessStartInfo) 从 c# 运行命令行应用程序;
问题是,cmd 行应用程序是一个 matlab 独立的 .exe,并且具有可选参数,这意味着您可以将它们传递到 cmd 行,如下所示:
app.exe "optional1" optional1value "optional2" optional2value
其中optional1value是整数或字符串等。
我们遇到的问题是双引号没有作为“可选1”参数的一部分传递,所以我相信 cmd.exe 会得到类似的东西:
app.exe optional1 optional1value optional2 optional2value
或类似的东西,matlab的解析器显然会被混淆。
我努力了:
@"""optional1"" optional1value ""optional2" optional2value"""
正如其他一些关于 cmd 行参数中双引号的 SO questions 中所建议的那样,但它似乎对我不起作用,也不是:
"\"optional1\" optional1value \"optional2\" optional2value\""
我写了一个小的 c# 命令行 .exe 来打印它得到的参数。如果我将命令行参数放在 VS Project->Debug 区域并运行它,那么它会用双引号打印它们,但是由于所有转义等,当我在代码中执行此操作时,.exe 会打印不带任何双引号的参数。
我发现这篇关于它的文章可能是 .NET 3.5 的 cmd 解析器中的一个错误,但似乎找不到可行的解决方案。
有没有人有任何想法?
感谢您的时间,
雨披
PS 有没有办法在使用 Process.Start() 发送参数时查看 cmd.exe 得到什么?我的进程打开了一个 cmd 窗口,但很高兴看到 cmd.exe 得到的行,例如:“app.exe optional1 optional1value”等。
再次感谢。