user2323308
user2323308

Reputation: 769

Spaces in command line argument not working

I have requirement to execute the command line arguments. If file path contains the Spaces it doesn’t work properly. It returns the error file not found. The program is given below.

public void Method()
{
    string docFile = @"C:\Test Document1.doc";
    string docxFile = @"C:\Test Document1.docx";
    string file = @"C:\doc2x_r649 (1)\doc2x_r649\doc2x.exe";

    ExecuteCommand(file, string.Format(docFile + " -o " + docxFile));
}

public static string ExecuteCommand(string file, string command)
{
    String result;
    try
    {
        //Create a new ProcessStartInfo
        System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo();
        //Settings
        procStartInfo.UseShellExecute = false;
        procStartInfo.CreateNoWindow = false;
        procStartInfo.RedirectStandardOutput = true;
        procStartInfo.FileName = file;
        procStartInfo.Arguments = command;
        //Create new Process
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        //Set ProcessStartInfo
        proc.StartInfo = procStartInfo;
        //Start Process
        proc.Start();
        //Wait to exit
        proc.WaitForExit();
        //Get Result
        result = proc.StandardOutput.ReadToEnd();
        //Return
        return result;
    }
    catch
    {

    }

    return null;
}

If file path doesn't contains spaces it works properly.

Upvotes: 0

Views: 3792

Answers (2)

ducmami
ducmami

Reputation: 215

Try this

ExecuteCommand(file, string.Format("\"{0}\" -o \"{1}\"",docFile , docxFile));

Upvotes: 2

Spaceman
Spaceman

Reputation: 547

Have you tried adding quotes to your paths?

ExecuteCommand(file, string.Format("\"" + docFile + "\" -o \"" + docxFile + "\""));

Upvotes: 2

Related Questions