2

我正在尝试使用名为 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:\输出.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 中的文件夹,但它仍在写入和保存输出。多谢你们!

4

3 回答 3

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();
于 2013-01-29T16:34:23.380 回答
5
Process.Start(new ProcessStartInfo
{
   FileName = @"C:\Program Files\IDM Computer Solutions\UltraCompare\uc.exe",
   Arguments = String.Format("\"{0}\" \"{1}\"", textBoxContents1, textBoxContents2)
});
于 2013-01-29T16:37:29.190 回答
1

确保你也为参数使用引号!如果其中任何一个textBoxContents1textBoxContents2包含空格,你就完蛋了!

于 2013-01-29T16:33:42.870 回答