user1985189
user1985189

Reputation: 669

How to execute command-line arguments with parameters in C#?

I'm trying to compare two folders using a third party comparison tool called UltraCompare. The following line calls the program and opens two files... but this doesn't do anything except open them, plus it doesn't work properly for folders.

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

I'd like to use the following command line call which opens two folders, runs a comparison on them, and stores the results in output.txt: uc -d -dmf "c:\dir1" "c:\dir2" -o "c:\output.txt"

Also, I'd need to use variables for the folders instead of hardcoding the paths.

How can I work that into my C# code?

UPDATE 1:

I've modified my code according to your suggestions:

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();

I'm wondering why the third line containing the arguments still doesn't work...

UPDATE 2:

My mistake. It is working now!! Just doesn't display the folders in UltraCompare but it is still writing and saving the output. Thanks guys!

Upvotes: 2

Views: 16098

Answers (3)

Aghilas Yakoub
Aghilas Yakoub

Reputation: 28970

You can use

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

Sample

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();

Upvotes: 6

Stefan Dragnev
Stefan Dragnev

Reputation: 14473

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

Upvotes: 5

Adi
Adi

Reputation: 5223

Make sure you use quotation marks for arguments, too! If any of textBoxContents1 or textBoxContents2 contains spaces, you are busted!

Upvotes: 1

Related Questions