2013-05-28 101 views
0

我有要求執行命令行參數。如果文件路徑包含空格,則無法正常工作。它返回未找到的錯誤文件。該程序如下。命令行參數中的空格不起作用

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; 
} 

如果文件路徑不包含空格,它可以正常工作。

回答

2

您是否嘗試將引號添加到路徑中?

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

爲什麼你使用'string.Format'如果你要做的就是串concatination – I4V

+0

@Spaceman:謝謝你..它曾爲 – user2323308

+0

@ I4V:我以前張貼的原代碼在這個問題中,但你是對的,在這種情況下不需要'string.Format'。 – Spaceman

2

試試這個

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