c#运行命令行中的字符串格式

如果我在控制台中运行以下命令,它将成功:

"C:\Users\myAccount.Unit\Favorites\Downloads\fiji.app (1)\fiji.exe" -macro "C:\Users\myAccount.Unit\Favorites\Downloads\fiji.app (1)\macros\FFTBatch.ijm" C:\Users\myAccount.Unit\Documents\Untitled001\ 

其中"C:\Users\myAccount.Unit\Favorites\Downloads\fiji.app (1)\fiji.exe"是应用程序文件,

"C:\Users\myAccount.Unit\Favorites\Downloads\fiji.app (1)\macros\FFTBatch.ijm"是执行的宏文件,

C:\Users\myAccount.Unit\Documents\Untitled001\是前一个宏处理的图像。

但是,当我使用C#来完成这项工作时,它失败了(意味着根本没有响应)。 以下是相关代码:

 string _fijiExeFile = "C:\\Users\\myAccount.Unit\\Favorites\\Downloads\\fiji.app (1)\\fiji.exe"; string _ijmFile = "C:\\Users\\myAccount.Unit\\Favorites\\Downloads\\fiji.app (1)\\macros\\FFTBatch.ijm"; string _inputDir = "C:\\Users\\myAccount.Unit\\Documents\\Untitled001\\"; string fijiCmdText = string.Format("/C \"{0}\" -macro \"{1}\" {2}", _fijiExeFile, _ijmFile, _inputDir); try { System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; startInfo.FileName = "cmd.exe"; startInfo.Arguments = fijiCmdText; process.StartInfo = startInfo; process.Start(); _processOn = true; process.WaitForExit(); ret = 1; } catch (Exception ex) { ret = 0; } 

(路径实际上是从UI获得的,我只是发布它是什么。)

这是我在fijiCmdText时为fijiCmdText观察到的fijiCmdText

 "/C \"C:\\Users\\myAccount.Unit\\Favorites\\Downloads\\fiji.app (1)\\fiji.exe\" -macro \"C:\\Users\\myAccount.Unit\\Favorites\\Downloads\\fiji.app (1)\\macros\\FFTBatch.ijm\" C:\\Users\\myAccount.Unit\\Documents\\Untitled001\\" 

如果我只使用

 string fijiCmdText = string.Format("/C \"{0}\"", _fijiExeFile); 

它确实启动了.exe应用程序,但是如果我打算添加宏文件路径,它就会失败。

这有什么不对吗?

我发布的链接指出您需要使用/ S开关并将整个命令放在引号中:

 string fijiCmdText = string.Format("/S /C \"\"{0}\" -macro \"{1}\" {2}\"", _fijiExeFile, _ijmFile, _inputDir); 

或者,更清楚地说:

 string fijiCmdText = "/S /C \"\"";