如何在C#中使用参数执行命令行参数?

时间:2013-01-29 16:32:20

标签: c# asp.net parameters command-line-arguments

我正在尝试使用名为UltraCompare的第三方比较工具比较两个文件夹。以下行调用该程序并打开两个文件...但除了打开它们之外没有做任何事情,加上它对文件夹无法正常工作。

Process.Start("C:\\Program Files\\IDM Computer Solutions\\UltraCompare\\uc.exe", 
textBoxContents1 + " " + textBoxContents2);

我想使用以下命令行调用打开两个文件夹,对它们进行比较,并将结果存储在output.txt中: uc -d -dmf“c:\ dir1”“c :\ dir2“-o”c:\ output.txt“

另外,我需要为文件夹使用变量而不是硬编码路径。

我如何将其用于我的C#代码?

更新1:

我已根据您的建议修改了我的代码:

var p = new System.Diagnostics.Process();
p.StartInfo.FileName = "C:\\Program Files\\IDM Computer Solutions\\UltraCompare\\uc.exe";
p.StartInfo.Arguments = String.Format("-d -dmf \"{0}\" \"{1}\" -o c:\\output2.txt",
textBoxContents1, textBoxContents2);
p.Start();

我想知道为什么包含参数的第三行仍然不起作用......

更新2:

我的错误。现在正在工作!!只是不显示UltraCompare中的文件夹,但它仍在编写并保存输出。谢谢你们!

3 个答案:

答案 0 :(得分:6)

您可以使用

yourProcess.StartInfo.Arguments = " .....";

样品

var p = new System.Diagnostics.Process();
p.StartInfo.FileName = "C:\\Program Files\\IDM Computer Solutions\\UltraCompare\\uc.exe";
p.StartInfo.Arguments = String.Format("-d -dmf {0} {1} -o c:\output.txt",textBoxContents1,   textBoxContents2);
p.Start();

答案 1 :(得分:5)

Process.Start(new ProcessStartInfo
{
   FileName = @"C:\Program Files\IDM Computer Solutions\UltraCompare\uc.exe",
   Arguments = String.Format("\"{0}\" \"{1}\"", textBoxContents1, textBoxContents2)
});

答案 2 :(得分:1)

确保你也为参数使用引号! 如果textBoxContents1textBoxContents2中的任何一个包含空格,则会被破坏!